GCP:查询具有特定标签的所有项目的所有实例

GCP: query all instances on all projects with specific label

我正在寻找 GCP 中的自动化解决方案,以每月查询具有特定标签的所有项目的所有实例;例如,“测试”。

我希望结果按项目(ID 或名称)分组

有办法吗?

欢迎光临!

描述您尝试过的内容会对您的问题有所帮助。

LABEL_KEY="test"

PROJECTS=$(gcloud projects list --format="value(projectId)")

for PROJECT in ${PROJECTS}
do
  gcloud compute instances list \
  --project=${PROJECT} \
  --filter=labels=${LABEL_KEY} \
  --format="value(name)"
done

上述方法的问题在于,如果项目中未启用 Compute Engine 服务,系统会提示您启用它(您可能不希望这样做)。

因此,您可以检查每个 ${PROJECT} 以获取已启用服务的列表,按 compute.googleapis.com 过滤,然后,如果它不在列表中,则传递该项目:

SERVICE="compute.googleapis.com"

gcloud services list \
--project=${PROJECT} \
--filter="name.scope(services)=${SERVICE}" \
--format="value(name)"