ローカル環境などで terraform を実行する場合、パラメータを.tfvarsファイルにセットして渡しているのですが、gitでは管理したくないので CodeBuild で terraform を使う時に引数渡しをどうするか悩みどころ。
terraform plan -var 'env=dev'
のように、-var
オプションを使って渡せば良いのだが、list渡しをどうすればいいのか分からなかった。
調べてみたところ、このように意外と簡単に設定できることがわかった。
terraform plan -var 'security_group_ids=[ "sg-012345678", "sg-876543210" ]'
ふむふむ、なるほど、と、環境変数を使う形に変えてみた。
export SECURITY_GROUP_IDS='[ "sg-012345678", "sg-876543210" ]' terraform plan -var 'security_group_ids=$SECURITY_GROUP_IDS'
これを実行すると terraform でパラメータが変だというエラーで怒られる。
きちんとexportできていないのか心配になって、echo で出力させてみたところ、設定はできている模様。
パラメータとして渡っているはずなのになぜエラーなのか・・・
設定のやり方を少しずつ変えて色々なパターンを試してみるも、対策は全滅。
迷走を極める中、ヒントを発見。
qiita.com
この記事によれば、シングルクォートはただの文字列として扱われるとのこと!
もしかして?と思いダブルクォートに変えてみました。
terraform plan -var "security_group_ids=$SECURITY_GROUP_IDS"
通った!!!
'
と "
は、似て非なるもの・・・改めて学びました。