概要
Terraformでmodule利用時にデフォルト値と動的な値を設定する。
例としてECSのタスク定義の環境変数を用いる。
バージョン
terraform -version Terraform v0.14.3
コード
モジュール側
modules/hoge/variable.tf
variable "environments" { type = list(object({ name = string, value = string })) default = [] }
型変換は下記の通り
https://www.terraform.io/language/expressions/types#type-conversion
modules/hoge/main.tf
... resource "aws_ecs_task_definition" "service" { ... container_definitions = jsonencode([ { name = "app" ... environments = concat([ { name = "DEFAULT_ENV" value = "default_env" }, ], var.environments) }, ]) ... }
リソース側
main.tf
module "fuga" { source = "./modules/hoge" environments = [ { name = "ADDITIONAL_ENV" value = "additional_env" } ] }
まとめ
https://www.terraform.io/language/functions/concat
を使うことでmodule利用時に動的に値を渡すことができる。