Kubernetes The Hard Way を進めていたら、見知らぬ envsubstコマンドに遭遇した。
$ export ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64) $ envsubst < configs/encryption-config.yaml \ > encryption-config.yaml
これは環境変数を展開して埋め込むコマンド。manによると substitutes environment variables in shell format strings
と説明がある。
上記の例ではconfigs/encryption-cnofig.yaml は環境変数 ENCRYPTION_KEY を参照しており、これを環境変数の値で埋めて encryption-config.yamlとして生成し直している。
このようにシェルで簡単にテンプレートの仕組みが実現できる。
ちなみに、envsubstはDebian系では gettext-baseパッケージに含まれており、大抵の場合は最初からインストールされている。
$ dpkg -S /usr/bin/envsubst gettext-base: /usr/bin/envsubst
参考: