格式化 gcloud compute instances 列表以获取单个元数据值
Format gcloud compute instances list to get single metadata value
作为某些 GCP 管理自动化的一部分,我正在尝试 运行 gcloud compute instances list 命令 return 一些实例属性,其中一个是单个元数据 属性.我在文档中找不到如何 return 只有一个元数据 属性.
根据文档,我认为这是正确的,但我没有得到任何元数据属性 returned...
gcloud compute instances list --filter="name~^my-machine.*-type" --zones=zone1,zone2,zone3 --format="json(name,metadata.items.MY_VALUE)"
如何 return 单个元数据值?
Eesh...这不显而易见;-)
KEY=...
gcloud compute instances list \
--project=${PROJECT} \
--format="value(metadata.items.extract("${KEY}"))"
我不确定它为什么有效。
就我而言:
gcloud compute instances list \
--project=${PROJECT} \
--format="value(metadata.items)"
产量:
{'key': 'gce-container-declaration', 'value': "..."};
{'key': 'google-logging-enabled', 'value': 'true'}
NOTE a semi-colon separated list of JSON objects
所以,metadata.items
似乎是 JSON 个对象的列表 {"key": $KEY, "value": $VALUE}
,我认为这就是为什么你不能使用某些东西遍历这些值的原因...... metadata.items.key["google-logging-enabled"]
或类似的。
当我最初使用 YAML 时,这并不明显,我认为,即使 YAML 看起来很扁平,但项目是嵌入的并且 --format=yaml
正在做一些聪明的事情:
gcloud compute instances list \
--project=${PROJECT} \
--format="yaml(metadata.items)"
---
metadata:
items:
- key: gce-container-declaration
value: |-
...
- key: google-logging-enabled
value: 'true'
但是:
gcloud compute instances list \
--project=${PROJECT} \
--format="value(metadata.items.extract("gce-container-declaration"))"
产量:
spec:
containers:
- name: instance-1
image: ...
stdin: false
tty: false
restartPolicy: Always
作为某些 GCP 管理自动化的一部分,我正在尝试 运行 gcloud compute instances list 命令 return 一些实例属性,其中一个是单个元数据 属性.我在文档中找不到如何 return 只有一个元数据 属性.
根据文档,我认为这是正确的,但我没有得到任何元数据属性 returned...
gcloud compute instances list --filter="name~^my-machine.*-type" --zones=zone1,zone2,zone3 --format="json(name,metadata.items.MY_VALUE)"
如何 return 单个元数据值?
Eesh...这不显而易见;-)
KEY=...
gcloud compute instances list \
--project=${PROJECT} \
--format="value(metadata.items.extract("${KEY}"))"
我不确定它为什么有效。
就我而言:
gcloud compute instances list \
--project=${PROJECT} \
--format="value(metadata.items)"
产量:
{'key': 'gce-container-declaration', 'value': "..."};
{'key': 'google-logging-enabled', 'value': 'true'}
NOTE a semi-colon separated list of JSON objects
所以,metadata.items
似乎是 JSON 个对象的列表 {"key": $KEY, "value": $VALUE}
,我认为这就是为什么你不能使用某些东西遍历这些值的原因...... metadata.items.key["google-logging-enabled"]
或类似的。
当我最初使用 YAML 时,这并不明显,我认为,即使 YAML 看起来很扁平,但项目是嵌入的并且 --format=yaml
正在做一些聪明的事情:
gcloud compute instances list \
--project=${PROJECT} \
--format="yaml(metadata.items)"
---
metadata:
items:
- key: gce-container-declaration
value: |-
...
- key: google-logging-enabled
value: 'true'
但是:
gcloud compute instances list \
--project=${PROJECT} \
--format="value(metadata.items.extract("gce-container-declaration"))"
产量:
spec:
containers:
- name: instance-1
image: ...
stdin: false
tty: false
restartPolicy: Always