如何从GCE实例内部获取实例组名称



此命令为我提供实例名称:

curl -X GET http://metadata.google.internal/computeMetadata/v1/instance/name -H 'Metadata-Flavor: Google'

这个命令给了我实例区域:

curl -X GET http://metadata.google.internal/computeMetadata/v1/instance/zone -H 'Metadata-Flavor: Google

我不知道如何获得类似的实例组名称?

我需要在GCE实例中设置自毁命令:

gcloud compute instance-groups managed delete-instances $INSTANCE_GROUP_NAME --instances=$NAME --zone=$ZONE

我为此写了一个小脚本,让我知道它是否适用于您:

#!/bin/bash
# exit if cURL not present
command -v curl >/dev/null || { echo 'curl not found! exiting' >> /dev/stderr ; exit 2; }
# try to fetch MIG name
migname=$(curl --silent --fail -H 'Metadata-Flavor: Google'  "http://metadata.google.internal/computeMetadata/v1/instance/attributes/created-by")
# if var is empty, instance is not part of MIG
# echo to stderr so you can safely use this in a script
[ -z "$migname" ] && { echo 'instance is not part of a MIG.' >> /dev/stderr ; exit 3; }
# otherwise, extract after last slash.
basename "$migname"

查看此文档:

https://cloud.google.com/compute/docs/instance-groups/getting-info-about-migs#checking_if_a_vm_instance_is_part_of_a_mig

似乎存在一个称为"0"的元数据键值;由"创建;。这似乎有一个类似于的值

projects/123456789012/zones/us-central1-f/instanceGroupManagers/igm-metadata

从这个角度来看,我们可以解析字符串和后面的值";instanceGroupManagers";似乎提供了我们正在寻找的信息。

相关内容

  • 没有找到相关文章

最新更新