我正在尝试编写一个脚本,允许实例在完成任务后自行终止。到目前为止,这是我想到的:
- 查询元数据以获取实例主机名和区域
- 假设主机名与实例名相同(这安全吗?)
- 对主机名执行正则表达式以删除域(这安全吗?)
- 调用 gcloud compute instance delete [name] --zone [zone] --quiet
这一切似乎有点脆弱,我想知道是否有更好的解决方案。特别是我知道我可以查询实例 ID,但似乎所有 gcloud 命令都需要名称而不是 ID。这是正确的吗?
答案1
对于 Linux VM 实例,请尝试此脚本:
VMNAME=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/hostname | cut -d. -f1)
ZONE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/zone | cut -d/ -f4)
gcloud compute instances delete $VMNAME --zone $ZONE --quiet
您还需要确保 VM 实例的服务帐户是具有编辑权限的项目成员。