---
title: yttで外部化したDataを環境変数で上書きするメモ
tags: ["YAML", "ytt", "k14s", "Carvle"]
categories: ["Dev", "Carvel", "ytt"]
date: 2020-10-13T16:28:23Z
updated: 2020-10-13T16:30:02Z
---

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

`config.yml`

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

`values.yml`

```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`

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

`values.yml`

```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上で設定を上書きしたい場合などに便利。
