gcloud 项目别快速切换

背景

本来实现是通过 gcloud auth activate-service-account --key-file xxx.json 来切换用户

gcloud auth activate-service-account --key-file ${HOME}/${jsonf}

然后再用 gcloud alpha storage ls -l gs:// 命令去检索文件

gcloud alpha storage ls -l gs://${sakid}/

再把检索到的问题下载到本地 gcloud alpha storage cp gs://xxxx  /tmp/xxxx

gcloud alpha storage cp gs://xxxx /tmp/xxxx

这种方式在单个处理里是OK的

问题

是如果一个终端想连接多个GCS的话,gcloud auth activate-service-account命令会让这个设定全局有效,也就是说会发生冲突导致想连接到别的GCS的处理出错。

解决方法

命令行会导致全局设定变化所以不可取了,只有局部有效的设定才能解决这个问题。

于是查找资料,发现了CLOUDSDK_ACTIVE_CONFIG_NAME环境变量可以解决这个问题。

处理中分别设定不同的CLOUDSDK_ACTIVE_CONFIG_NAME=XXXX,使设置在当前会话中有效

配置这个环境变量需要一些前提条件 设置configurations,方法如下

1.新建一个配置并命名
gcloud config configurations create alice-project #设置配置名称
2.给配置设置项目名
gcloud config set account alice@example.com
3.给配置设置区域
gcloud config set compute/zone us-central1-a
4.设置完了查看设置
gcloud config list

username $ gcloud config list
[compute]
zone = us-central1-a
[core]
account = alice@example.com
disable_usage_reporting = True
project = alice-project

Your active configuration is: [alice-project]
5.也可以用configurations 来查看配置一览
gcloud config configurations list

username $ gcloud config configurations list
NAME           IS_ACTIVE  ACCOUNT            PROJECT        DEFAULT_ZONE   DEFAULT_REGION
alice-project  True       alice@example.com  alice-project  us-central1-a
6.同样的方法可以设置另一个项目
$ gcloud config configurations create bob-project
$ gcloud config set project bob-project
$ gcloud config set account bob@example.com
$ gcloud config set compute/zone asia-east1-a
7.切换配置时,可以使用命令gcloud config configurations activate
username $ gcloud config configurations activate alice-project
Activated [alice-project].
macbook:~ username $ gcloud config list
[compute]
zone = us-central1-a
[core]
account = alice@example.com
disable_usage_reporting = True
project = alice-project

Your active configuration is: [alice-project]
8.切换配置也可以不用命令行,使用环境变量CLOUDSDK_ACTIVE_CONFIG_NAME
username $ export CLOUDSDK_ACTIVE_CONFIG_NAME=bob-project 
username $ gcloud config list
[compute]
zone = asia-east1-a
[core]
account = bob@example.com
disable_usage_reporting = True
project = bob-project

Your active configuration is: [bob-project]
9.只有一个项目时,也可以将CLOUDSDK_ACTIVE_CONFIG_NAME写入~/.bash_profile中
~ username $ echo "export CLOUDSDK_ACTIVE_CONFIG_NAME=bob-project" >> ~/.bash_profile
~ username $ source ~/.bash_profile
10.当在不同的处理(shell)中,可以分别给环境变量CLOUDSDK_ACTIVE_CONFIG_NAME设置不同的值
A Shell
export CLOUDSDK_ACTIVE_CONFIG_NAME=alice-project

B Shell
export CLOUDSDK_ACTIVE_CONFIG_NAME=bob-project

经验证两个Shell同时执行也不会受影响。

11.要删除配置可以用gcloud config configurations delete CONFIGURATION_NAME
$ gcloud config configurations list
NAME         IS_ACTIVE  ACCOUNT                      PROJECT              COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default      True       sample@example.com           default-project
my-config    False                                   my-project

$ gcloud config configurations delete my-config
The following configurations will be deleted:
 - my-config
Do you want to continue (Y/n)?  y

Deleted [my-config].

$ gcloud config configurations list
NAME         IS_ACTIVE  ACCOUNT             PROJECT          COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default      True       sample@example.com  default-project

至此问题解决

参考:https://cloud.google.com/sdk/docs/configurations?hl=zh-cn

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值