使用gcloud compute命令了解机器当前所在的区域

9

我需要在谷歌云上寻求帮助,我正在使用谷歌云开发一个应用程序。在谷歌云上我有一个Windows实例和安装了谷歌云SDK的实例。我需要一个命令来返回该实例所在的区域名称。 注意: 我不需要区域列表。 我只需要我的实例所在的区域名称。 谢谢您的帮助。

4个回答

13
简化版:
gcloud compute instances list <your instance name> --format 'csv[no-heading](zone)'

这个操作同时完成了两件事情。它

gcloud compute instances list your-instance-name

该部分列出了所有具有该名称的实例,例如:

NAME                ZONE           MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP    EXTERNAL_IP    STATUS
your-instance-name  europe-west1-c n1-standard-1             1.000.000.001 100.000.000.01 RUNNING

而该

--format 'csv[no-heading](zone)'  

该部分将输出重新格式为只包含具有标题的表格和zone列。有关格式化输出的更多信息,请参见https://cloud.google.com/sdk/gcloud/reference/topic/formats(或gcloud help topic formats)。

4
“list name”已被弃用,“--format”可能会被简化:gcloud compute instances list --filter="name=('your-hostname')" --format "value(zone)"。建议改为:gcloud compute instances list --filter="name=('your-hostname')" --format="value(zone)" - xmedeko
谢谢@xmedeko,--format "value(zone)"非常有用。 - Dee

3
如果在实例本身上,您想获取区域:
gcloud compute instances list --filter="name=('`hostname`')" --format 'csv[no-heading](zone)'

1

如果您更喜欢使用GoogleCloud PowerShell模块,以下内容将帮助您获取区域的URI:


杰弗里的回答对于使用gcloud命令行工具非常准确。
$zone = (Get-GCEInstance).Where({$_.Name -eq $(hostname)}).Zone

例如,这可能会用以下内容填充$zone:
https://www.googleapis.com/compute/v1/projects/my-project-001/zones/us-east1-a

如果您只需要最后一部分(令人讨厌的是,其他 cmdlet 的参数似乎只需要最后一部分,并且 uri 不是有效格式),您可以执行以下操作:
$zone.Substring($zone.LastIndexOf("/")+1)

返回:

us-east1-a

1
假设您有一些类似cURL的URL获取工具,您可以像这样获取区域名称:
curl http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut '-d/' -f4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接