🙌
ecspressoでboolean型をどうにかファイルで操作する方法
概要
ecspressoでdevやprod環境で一部のパラメータを変えたい時がある。
この際の方法として環境変数を用いて操作することもある。
ただし、この方法では文字列型として扱われるため数値やBoolean型は対応していない。
前提条件
- ecspressoの定義ファイルはjsonnetを使用している
- 今回はdev環境にはECS Execを使用させるという方針のために対応した
数値での対応方法
詳しくは書けない。
理由はecspressoの開発者が有料記事として載せてくれている方法であるため。
見たい場合はZennで作者の本を買おう。「Jsonnetを使用する」という章に書かれている
Booleanでの対応方法
前述の数値での対応方法だけではtrue/falseは対応していなかった。
このため、以下のようにjsonnetで対応した。
local env_name = std.extVar('ENV');
local env =
if env_name == 'dev' then import '../../environment/dev.json'
else import '../../environment/prod.json';
~snip~
enableECSManagedTags: true,
enableExecuteCommand: if env.ENABLE_EXE_CMD == 'true' then true else false,
launchType: 'FARGATE',
~snip~
$ cat ../../environment/dev.json
{
"ENABLE_EXE_CMD": "true"
}
ecspresso diff --ext-str ENV=dev
解説
jsonnetの機能を使用してenv情報を取得する。
その情報をif文を使用して判定してtrue/falseを当てる。という方法で対応した。
Discussion
応用としてピンポイントの場合は
として引数で渡すのもできる