こんにちは、インフラエンジニアの天津です。
最近年を取ったせいか、エレベータで行き先階を間違えることがあります。
そんなときは、エレベータの行先階ボタンはダブルタップで取り消しができる場合があります。
これで加齢も怖くありませんね。
さて小ネタはこのへんで、今回はGCP SDKのgcloudコマンドにおける、
複数プロジェクトやアカウント間の設定切り替えについてお話しします。
gcloudコマンドでのGCPプロジェクト/アカウントの設定
gcloud コマンドでGCPのプロジェクト/アカウントを設定する場合は下記のコマンドを使用します。
# プロジェクト $ gcloud config set project {project_name} # アカウント $ gcloud config set account {account_name}
※アカウントは初回のみ下記を実行してactivate する必要があります。
# アカウント(IAMアカウント) $ gcloud auth login # アカウント(サービスアカウント) $ gcloud auth activate-service-account {service_account_name} --key-file {service_account_credential_file}
インフラ担当としてはGCPなどクラウド環境で複数プロジェクトやアカウントを
管理することが多く、毎回上記コマンドを使用するのは面倒です。
また管理対象が多くなると、切り替えたいときにコマンドやアカウント名が
パッとでてこない場合もあります。
そこで、もっと楽な方法はないか探してみました。
gcloud のconfig 管理
実はgcloud には複数プロジェクト/アカウントの設定管理の仕組みがありました。
gcloud config configurations
プロジェクトとアカウントをセットにして登録ができます。
作り方ですが、下記を作成する場合、まず名前付きconfigを作成します。箱を用意するイメージです。
config名は見分けが付きやすいようアカウント名とプロジェクト名をつけておくのをオススメします。
- config名
- config-baz-foo
- アカウント
- foo@bar.com
- プロジェクト名
- baz
では作成してみましょう。
# config セットの作成 $ gcloud config configurations create config-baz-foo Created [config-baz-foo]. Activated [config-baz-foo].
その箱に対してプロジェクト、アカウントをセットします。
# プロジェクト $ gcloud config set project baz Updated property [core/project]. # アカウント $ gcloud config set account foo@bar.com Updated property [core/account].
これで完成です。
作成したconfig に切り替えるときは下記のコマンドを実行します。
$ gcloud config configurations activate config-baz-foo Activated [config-baz-foo].
確認してみましょう。
$ gcloud config configurations list NAME IS_ACTIVE ACCOUNT PROJECT DEFAULT_ZONE DEFAULT_REGION config-baz-foo True foo@bar.com baz
IS_ACTIVEカラムがTrue になっているのが現在有効な設定です。
正しく変更されていますね。
デフォルトゾーンやデフォルトリージョンも設定できるので必要に応じて設定してみてください。
さらに便利に
これで使用するプロジェクトやアカウントで名前をつけて保存しておけば切り替えが楽になりますね。
私はさらに便利にするため、pecoを組み合わせた簡単なzshスクリプトを書いています。
# gconf.zsh function gconf() { projData=$(gcloud config configurations list | peco) if echo "${projData}" | grep -E "^[a-zA-Z].*" > /dev/null ; then config=$(echo ${projData} | awk '{print $1}') gcloud config configurations activate ${config} echo "=== The current account is as follows ===" gcloud config configurations list | grep "${config}" fi }
これでgcloudの長いコマンドをド忘れしても大丈夫。
ねらったプロジェクトとアカウントに切り替えができます。
まとめ
今回はgcloudのプロジェクト/アカウント設定の切り替えについてご紹介しました。
実際の運用では作業先を間違えないようtmux のステータスやシェルのプロンプトなどに
現在のプロジェクト、アカウントを表示すればさらに便利になると思います。
また機会があればそのあたりについてもお話ししたいと思います。
それではまた!