[英]How to list the most compute instances' info for a project in GCP?
我试图列出与我的帐户关联的所有项目下存在的所有虚拟机,包括它们的操作系统和我能找到的任何其他标签。 我已经有了项目列表,所以我正在使用的是:
for project in project_df["project_id"]:
subprocess.run(["gcloud config set project {}".format(project)], shell=True)
cp = subprocess.run(["gcloud compute instances os-inventory list-instances"], shell=True)
print(cp)
这确实有效,但我得到的唯一标签是:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
如何获取虚拟机的操作系统? 可能还有更多标签? 我尝试使用: GET https://compute.googleapis.com/compute/v1/projects/{project}/aggregated/instances ,但没有成功,因为我无法发出requests
或urllib
使用它。
sdk 中是否还有其他 python 库或我缺少的其他 gcloud 命令?
谢谢
您可以使用--format
标志来转换 output。
有无限的可能性,包括:
gcloud compute instances list \
--project=${PROJECT} \
--format="value(name,status,zone,id,kind)"
gcloud compute instances list \
--project=${PROJECT} \
--format="json"
gcloud compute instances list \
--project=${PROJECT} \
--format="yaml"
但是,您最好使用Compute API而不是使用 Python 中的 shell 来为您运行命令。
Compute API 是gcloud
CLI 的基础,直接使用它可以让您受益于能够配置它并直接使用 Python 数据类型接收结果。
有关基本示例,请参阅 Google 文档中的 Python 示例。
根据@DazWilkin 的回答,对我的案例有用的是:
我运行了gcloud compute instances list --format=flattened
,它向我展示了许多(如果不是全部)可能的标签。 然后我找到了在你运行gcloud compute instances list
时没有出现的那些,然后运行以下命令来获得我想要的:
gcloud compute instances list --format="csv(name, zone, labels.compute_machine_type, canIpForward, labels.os, creationTimestamp, status)" > compute_info.csv
这样我也避免了使用计算 API。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.