【问题标题】:Add timestamp to name of created VM's instance in bash script在 bash 脚本中为创建的虚拟机实例的名称添加时间戳
【发布时间】:2021-01-06 21:49:00
【问题描述】:

我使用 bash 脚本在我的云基础架构中部署了一些 VM 的实例:

#!/bin/bash
instance_name="vm"
# create instance
yc compute instance create \
  --name $instance_name \
  --hostname reddit-app \
  --memory=2 \
  ...

我需要以vm-DD-MM_YYYY-H-M-S 格式为实例名称添加时间戳。
对于调试,我尝试设置值 instance_name=$(date +%d-%m-%Y_%H-%M-%S) 但收到错误:

ERROR: rpc error: code = InvalidArgument desc = Request validation error: Name: invalid resource name

任何帮助将不胜感激。

【问题讨论】:

  • 名称中可能不允许出现下划线、连字符或数字。尝试删除它们或查看 YC 文档。
  • @l0b0 感谢您的回复。我发现下划线可能与这个问题有关。我试过设置instance_name=$(date +%s)。这应该只显示没有下划线、连字符的数字。但仍在寻找错误。
  • 那么我只能建议查看文档。它们可能有任意数量的限制,例如长度或不包括数字。
  • 假设实例名称以字母开头,请尝试:instance_name="vm-$(date +%d-%m-%Y_%H-%M-%S)".
  • @l0b0 文档说:“名称可能包含小写拉丁字母、数字和连字符。第一个字符必须是字母。最后一个字符不能是连字符。最大长度为名称为 63 个字符”。我用这些建议修改了我的脚本,它现在可以工作了。

标签: bash shell yandexcloud


【解决方案1】:

Yandex Cloud 文档说:
"名称可以包含小写拉丁字母、数字和连字符。第一个字符必须是字母。最后一个字符不能是连字符。名称的最大长度为 63 个字符"。

我按照建议更改了我的脚本,现在它可以工作了:

#!/bin/bash
instance_name="vm-$(date +%d-%m-%Y-%H-%M-%S)"
# create instance
yc compute instance create \
  --name $instance_name \
  --hostname reddit-app \
  --memory=2 \
  ...

【讨论】:

  • 不错!在 linux 中,使用 ISO 日期也很有用,这样您就可以轻松地使用文件名称来订购文件:20210121。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 2020-01-03
相关资源
最近更新 更多