マルチクラウド・マルチプロジェクトにおける環境変数の切り替えにはdirenv
CLI上で業務・開発を行う人間にとって環境変数はとても重要で敏感なモノであると思う。
無邪気にSDKやツールをインストールしていたあの若かりし日が懐かしい。
自ら環境を破壊し、自らの成長を妨げていた事に当時気づけなかった事が悔やまれる。
direnvの導入とセットアップ
整頓された環境変数を用意する為に direnvを導入したが、今のところフィットしていて不都合がない。
導入の為のインストールなどは readmeを読んで頂いた方が良いだろう。
使用しているシェルによって、セットアップの為に追記すべき1行が異なるのでそこだけは注意かもしれない。
私はzshを愛用しているので
eval "$(direnv hook zsh)"
を~/.zshrc
に追記している。
direnvで出来ること
ディレクトリを移動した際に.envrc
ファイルが存在すれば、そのファイルを読み込み実行する。
その.envrc
にAWSのaccess keyやsecret keyをexport
するように記述しておけば良い。
とてもシンプルだし考えれば思いつきそうだが、これをシンプルに実現している所が気に入っている。
良いツールは常にシンプルだ。
direnvが行っていること
main.go
を読むとわかると思う。
main関数で実行しているCommandsDispatch()
がその全てと言ってよいと思う。CommandsDispatch()
自体はcommands.go
ファイルに記述されている。
commands.go
のinit関数で生成されているCmd
構造体のスライスであるCmdList
の各Cmd構造体を追っていけば何をしているか理解出来ると思う。
各Cmd構造体はcmd_XXX.go
というファイル名で宣言されているので各ファイルを読めば何をしているのかは明快だ。
良いツールは常にシンプルだ。
git管理する時は。gitignoreに注意
当たり前だが、direnv
を使うために.envrc
ファイルを作成したディレクトリをgit
管理する場合は.gitignore
に.envrc
の記述が必須になる。
うっかりとGitHubに自分のkey情報を記載した.envrc
を公開してしまう事は避けたい。
二重のチェックの意味で
awslabs/git-secretsというツールを使う事もオススメだ。
Gitのhooksを使ってawsのaccess keyのコミットを防いでくれるものだ。
こちらも仕組みはシンプルだが強力でなくてはならないツールだ。
いつだって良いツールは常にシンプルだ。