GCPやAWSなどのクラウドを使用して複数のプロジェクトを管理していると設定の切り替えなどが面倒に感じることがあります。
特にCLIを使用してプロジェクトの操作を行うときに切り替え忘れると事故につながる場合もあるかもしれません。
そこで開発ディレクトリに移動したタイミングで自動的にプロファイルを切り替える方法を紹介します。
前提
- gcloud, awsなどのcliでプロファイルを設定済み
プロファイルの確認方法
GCPの場合は
gcloud config configurations list
AWSの場合は
aws configure list
direnvの導入
direnvは、ディレクトリに対して環境変数を設定するための拡張ツールです。このツールを使用すると、特定のディレクトリに移動したときに自動的に環境変数を設定することができます。
インストール
apt install direnv eval "$(direnv hook bash)" source ~/.bashrc
ディレクトリに環境変数を設定するファイルを設置
作業ディレクトリのルートに
.envrc
を作成します# GCPの場合 export CLOUDSDK_ACTIVE_CONFIG_NAME=<CONFIG_NAME> # AWSの場合 export AWS_PROFILE=<PROFILE_NAME>
.envrcを設定後にディレクトリに移動するとdirenvの許可を求められるので指示に従います。
direnv allow
以上で作業ディレクトリ移動するだけでプロファイルの切り替えができるようになります。
更にStarshipを使用してterminalに現在のプロファイルを表示すると視覚的にわかりやすくなります。
おまけ
kubernetesのcontext切替を自動で行う方法
プロジェクトルートにkube/configを作成します
aws eks update-kubeconfig --name <PROFILE_NAME> --kubeconfig=.kube/config
.envrcにkubeconfigを設定する項目を追加
... export KUBECONFIG=$(pwd)/.kube/config