我想找到连接到实例的所有磁盘。
当我做gcloud compute disks list
时,我都得到了。可能有一个--filter
可以提供帮助,但是我在文档中找不到关于这些过滤器的任何帮助。
除非我假设要获取实例名称的磁盘名称(我不想基于任何逻辑),否则我仍在寻找如何获取实例的名称。
答案 0 :(得分:3)
您可以尝试使用以下命令:
gcloud compute instances describe <instance-name> --zone=<your-zone> | sed -n -e '/disks/,/id:/ p'
使用管道可以过滤输出,仅显示实例上连接的磁盘。希望它会有用
答案 1 :(得分:2)
使用以下格式选项应该很容易。
gcloud compute instances list --filter='name~test*' --project sampleproject --format="value(name,zone,disks[].deviceName)"
答案 2 :(得分:1)
感谢@ j-rojas,但这个似乎更好:
gcloud compute instances describe --zone=<zone-name> <instance-name> --format=json \
| python -c 'import sys, json; print "\n".join(disk["source"] for disk in json.load(sys.stdin)["disks"])' \
| xargs -I {} sh -c 'gcloud compute disks describe {} --format=json \
| python -c "import sys, json; print(json.load(sys.stdin)[\"name\"])"'
这样,就可以清理它并准备将其通过管道传输(每行一个磁盘)。
一行:
gcloud compute instances describe --zone=<zone-name> <instance-name> --format=json | python -c 'import sys, json; print "\n".join(disk["source"] for disk in json.load(sys.stdin)["disks"])' | xargs -I {} sh -c 'gcloud compute disks describe {} --format=json | python -c "import sys, json; print(json.load(sys.stdin)[\"name\"])"'