我有两个Google Cloud服务帐户;我的两个项目各占一个。
# ACCOUNTS
editor@someproj-1.iam.gserviceaccount.com
editor@someproj-2.iam.gserviceaccount.com
我可以告诉gcloud
在执行命令之前我需要使用哪个帐户:
gcloud set account [ACCOUNT]
问题:我有什么方法可以配置gcloud
和gsutil
,这样它们就可以用于各自项目中执行的操作,而无需在这些帐户一直是手动吗?
我在一个项目中管理实例,我从另一个项目中的存储桶上传/下载文件。在中间命令之间不断执行gcloud set_account [ACCOUNT]
变得非常繁琐。
我需要同时在两个项目中运行长时间运行的命令,这使我认为如果激活/取消激活用于这些命令的帐户,我将陷入陷阱。
也许我唯一的选择是从两个不同的Docker容器运行google-cloud-sdk?
答案 0 :(得分:27)
这里有几个选项:
Cloud SDK尊重指定属性的环境变量。 gcloud config set account
是gcloud config set core/account
的简写,因此相应的属性为CLOUDSDK_CORE_ACCOUNT
。
您可以执行以下操作:
$ CLOUDSDK_CORE_ACCOUNT=email1@domain1.com gcloud ...
$ CLOUDSDK_CORE_ACCOUNT=email2@domain2.com gcloud ...
哪个可以为您提供您感兴趣的结果。
如果您需要更改多个属性,Cloud SDK会提供named configuration抽象。有关完整详细信息,请参阅文档,但您可以运行:
$ gcloud config configurations create my-project1-config
$ gcloud config configurations activate my-project1-config
$ gcloud auth login # or activate-service-account
$ gcloud config set project project1 # and any other configuration you need to do
$
$ gcloud config configurations create my-project2-config
$ gcloud config configurations activate my-project2-config
$ gcloud auth login # or activate-service-account
$ gcloud config set project project2 # and any other configuration you need to do
$
$ CLOUDSDK_ACTIVE_CONFIG_NAME=my-project1-config gcloud ...
$ CLOUDSDK_ACTIVE_CONFIG_NAME=my-project2-config gcloud ...
在最极端的情况下,您可以维护单独的Cloud SDK配置目录。默认值(在* nix上)为~/.config/gcloud
:
$ CLOUDSDK_CONFIG=/tmp/tmpconfig1 gcloud auth login
$ CLOUDSDK_CONFIG=/tmp/tmpconfig2 gcloud auth login
答案 1 :(得分:6)
Zachary的答案非常有用,但是有一种使用gcloud的配置的简便方法。
运行gcloud config configurations list
以显示您的配置列表。如果您还没有做任何事情,它只会列出default
以及您当前处于活动状态的任何帐户,项目等。
使用gcloud config configurations create [config name]
创建新配置:
> gcloud config configurations create testconfig
Created [testconfig].
Activated [testconfig].
新配置现在将处于活动状态,因此继续使用gcloud init
进行设置:
> gcloud init
Welcome! This command will take you through the configuration of gcloud.
然后它将询问您一系列问题:
[1] Re-initialize this configuration [testconfig] with new settings
。
Your Google Cloud SDK is configured and ready to use!
使用gcloud config configurations activate [config name]
切换帐户。