簡體   English   中英

如何從 GCE 實例內部獲取實例組名稱?

[英]How do I get instance-group name from inside of a GCE instance?

這個命令給了我實例名稱:

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

看這個文件:

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

似乎有一個名為“created-by”的元數據鍵值。 這似乎具有類似於以下的值:

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

看看這個,我們似乎可以解析字符串,“instanceGroupManagers”后面的值似乎提供了我們正在尋找的信息。

我為此寫了一個小腳本,讓我知道它是否適合你:

#!/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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM