如何使用gcloud列出GCE项目所有磁盘及关联计算实例与元信息
如何列出GCE项目磁盘及关联的计算实例元信息
你可以通过gcloud命令结合jq工具来关联磁盘和计算实例的信息,以下是具体步骤:
方法一:分步导出数据并关联
导出磁盘详细数据
执行命令将项目下所有磁盘的JSON信息保存到文件:gcloud compute disks list --format=json --project YOUR_PROJECT_ID > disks.json导出计算实例详细数据
同样导出所有实例的JSON信息:gcloud compute instances list --format=json --project YOUR_PROJECT_ID > instances.json用jq关联数据并输出
使用jq将两个文件的数据关联,提取磁盘信息及对应的实例名称、标签:jq -n ' ($instances | map({key: .selfLink, value: {name: .name, labels: .labels}}) | from_entries) as $instanceMap | $disks[] | { disk_name: .name, disk_size: .sizeGb, disk_type: .type, attached_instances: [ .users[]? | $instanceMap[.] // {name: "Unattached", labels: {}} ] } ' disks.json instances.json
方法二:单命令直接输出
如果不想保存中间文件,可以用一条命令完成:
gcloud compute disks list --format=json --project YOUR_PROJECT_ID | jq --argjson instances "$(gcloud compute instances list --format=json --project YOUR_PROJECT_ID)" ' ($instances | map({key: .selfLink, value: {name: .name, labels: .labels}}) | from_entries) as $instanceMap | .[] | { disk_name: .name, disk_size: .sizeGb, disk_type: .type, attached_instances: [ .users[]? | $instanceMap[.] // {name: "Unattached", labels: {}} ] } '
说明
- 替换命令中的
YOUR_PROJECT_ID为你的GCE项目ID - 输出结果中,每个磁盘会包含名称、大小、类型,以及关联的实例列表(包含实例名称和标签);未挂载的磁盘会显示
Unattached - 若需要调整输出字段,可修改jq中的提取逻辑,比如添加磁盘区域、创建时间等
内容的提问来源于stack exchange,提问作者xvzf
相关产品推荐
相关产品推荐

