less than 1 minute read

gcloudは、GCPの各種リソースをコマンドで操作するためのCLIツールである。 GCPのリソースを操作するので、当然に適切なアカウントでの認証が必要になる。 複数の組織やプロジェクトに同時に関わっていると、それぞれのタスクごとにgoogleアカウントを切り替える必要があり、手動で管理するには限界がある。

こういう問題を解決するアプローチは複数考えられると思うが、私は、direnvによって、フォルダ移動に伴って自動で設定が変わるようにしている。

direnvは、.envrcというファイルを置いておくと、そのフォルダにcdしたときに自動で.envrcの中身を実行してくれる、というツールである。 このファイルに必要な環境変数などを記述しておけば、cdするだけで変数の値が勝手に切り替わるような環境が作れる。

export CLOUDSDK_ACTIVE_CONFIG_NAME=<configuration name>
export GOOGLE_USER=<account>
export PROJECT_ID=<project id>

if ! gcloud config configurations list | awk '{print $1}' | grep -E ^${CLOUDSDK_ACTIVE_CONFIG_NAME}$; then
    echo creating ${CLOUDSDK_ACTIVE_CONFIG_NAME}
    gcloud config configurations create ${CLOUDSDK_ACTIVE_CONFIG_NAME}
else
    echo configuration ${CLOUDSDK_ACTIVE_CONFIG_NAME} exists
fi
gcloud config set project ${PROJECT_ID}
gcloud config set account ${GOOGLE_USER}

上の内容で、最初の3行が、プロジェクトごとに変更する部分である。gcloudを始めとして、GCPがが提供する各種のAPIやCLIは、特定の名前の環境変数を認識するが、この変数の名前は、割ととっちらかっていて、上記の構成がベストなのかは分からない・・というか、ほぼ間違いなく、より良いプラクティスがあるだろうと思いつつ調べるのが面倒なので↑としている。

新しいプロジェクトを作るたびに、どっかからコピペしているので、ここに書いておくことにした。

タグ:

カテゴリー:

更新日時: