毎回忘れてしまうのでメモとして残しておく。
設定ファイルとかを使う時に環境変数を埋め込みたい時とかがある。
例えばDBへの接続情報を管理するような次のようなファイルがあったとする。
- DB_HOST: xxx.yyy.zzz - DB_USER: fugafuga - DB_PASS: hogehoge
ただこの秘匿値をいれたファイルの管理はどうするかは毎回悩む。
Gitで管理したいので秘匿値だけencodeしたりプロビジョニングツールとか使ってテンプレートに埋め込んだりする。
今回はその解決策の1つ
envsubst
というものを使う。
これは環境変数を置き換える
ただそれだけ!!
めっちゃシンプル
インストール
envsubst
はgettextの中に入っているので各OSからは次のようにインストールする。
Mac
brew install gettext
Ubuntu
apt-get install gettext
使い方
先程のようなDBへの接続情報をまず次のようなテンプレートにする。
- DB_HOST: ${DB_HOST} - DB_USER: ${DB_USER} - DB_PASS: ${DB_PASS}
後は環境変数で次のように管理されたマシンがあれば
export DB_HOST=xxx.yyy.zzz export DB_USER=fugafuga export DB_PASS=hogehoge
次のコマンドで最初と同じファイルが生成される。
$ cat template.yml | envsubst > db.yml
まとめ
envsubst
はテンプレートエンジンみたいに多機能なわけでもなくただ環境変数を置き換えるシンプルなツールを紹介した。
シンプルが故に便利な時もある。