yttで外部化したDataを環境変数で上書きするメモ

次のファイルがある場合、

config.yml

#@ load("@ytt:data", "data")
env:
  MYSQL_HOSTNAME: #@ data.values.mysql_hostname

values.yml

#@data/values
---
mysql_hostname: example.com

通常の出力は次の通り。

 $ ytt -f config.yml -f values.yml 
env:
  MYSQL_HOSTNAME: example.com

values.ymlの値を環境変数で上書きしたい。--data-values-envで上書きする環境変数名のprefixを指定する。

$ export YTT_mysql_hostname=mysql.examplecom 
$ ytt -f config.yml -f values.yml --data-values-env YTT
env:
  MYSQL_HOSTNAME: mysql.examplecom

次のようにvalues.ymlがnestしたhashの場合、

config.yml

#@ load("@ytt:data", "data")
env:
  MYSQL_HOSTNAME: #@ data.values.mysql.hostname

values.yml

#@data/values
---
mysql:
  hostname: example.com

.ではなく__を使う。

$ export YTT_mysql__hostname=mysql.examplecom
$ ytt -f config.yml -f values.yml --data-values-env YTT
env:
  MYSQL_HOSTNAME: mysql.examplecom

CI上で設定を上書きしたい場合などに便利。