我正在寻找一个可以从Cloud Shell运行的脚本,以在所有项目中启用API。它正在顺利地通过每个项目,但是我收到了每个项目的拒绝权限消息。我是所有者,因此不应有任何许可问题。
作为权限测试,如果我仅运行“ gcloud服务启用cloudresourcemanager.googleapis.com”,则该API将成功启用。
我想念什么?
#!/bin/bash
for project in $(gcloud projects list --format="value(projectId)")
do
echo "ProjectId: $project"
for enableapi in $(gcloud services enable cloudresourcemanager.googleapis.com list --project $project --format=list)
do
echo " -> Enabled $enableapi"
done
done
答案 0 :(得分:4)
卢卡斯,这种方式可行:
#!/bin/bash
for project in $(gcloud projects list --format="value(projectId)")
do
echo "ProjectId: $project"
gcloud config set project $project
gcloud services enable cloudresourcemanager.googleapis.com --project $project
done
我正在关注this doc。
答案 1 :(得分:0)
如果使用--project标志启用服务,则不必设置项目配置。真正的问题是您想在bash脚本中启用多个服务,包括不存在的名为“列表”的服务。以下是同时正确启用多个api的方法:
#!/bin/bash
# Make sure this is a valid bash array!
services=(service1 service2 service3)
# Option 1
for project in $(gcloud projects list --format="value(projectId)")
do
gcloud services enable $services --project $project
done
# Option 2
for project in $(gcloud projects list --format="value(projectId)")
do
for service in $services
do
gcloud services enable $service --project $project
done
done
请参阅this文档。