如何在GCP中列出项目的最多计算实例的信息?

问题描述

我试图列出与我的帐户关联的所有项目下存在的所有VM,包括其操作系统以及我可以找到的任何其他标签。我已经有了项目列表,所以我正在使用的是:

 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

如何获取VM的操作系统?还有更多标签吗?我尝试使用: GET https://compute.googleapis.com/compute/v1/projects/{project}/aggregated/instances,但没有成功,因为我无法使用requestsurllib

我还缺少sdk或其他gcloud命令提供的其他python库吗?

谢谢

解决方法

您可以使用--format flag来转换输出。

有无限可能,包括:

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为您运行命令。

gcloud CLI的基础是Compute API,直接使用它可以为您带来好处,即可以使用Python数据类型直接配置它并接收结果。

有关基本示例,请参见Google文档中的Python example

,

根据@DazWilkin的回答,适用于我的情况的是:

我运行了gcloud compute instances list --format=flattened,向我显示了很多(如果不是全部)可能的标签。然后,我发现当您运行gcloud compute instances list时没有出现的内容,然后运行以下命令来获取我想要的内容:

gcloud compute instances list --format="csv(name,labels.compute_machine_type,canIpForward,labels.os,creationTimestamp,status)" > compute_info.csv

通过这种方式,我还避免使用compute API。