GCE:如何查找附加到实例的所有磁盘?

时间:2018-11-27 10:13:28

标签: google-cloud-platform google-compute-engine

我想找到连接到实例的所有磁盘。

当我做gcloud compute disks list时,我都得到了。可能有一个--filter可以提供帮助,但是我在文档中找不到关于这些过滤器的任何帮助。

除非我假设要获取实例名称的磁盘名称(我不想基于任何逻辑),否则我仍在寻找如何获取实例的名称。

3 个答案:

答案 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\"])"'