3つの異なる環境では、環境に基づいて変数を動的に設定できます。以下の私の例では、インスタンスの型がdevとprodの間で異なっているとしましょう。私はをterraform.tfvars
の横にvars.tf
というファイルがない限り参照できません。Terraform - モジュールでtfvarsを使用する方法
私が手にエラーがある:
unknown variable referenced: 'instance_type'. define it with 'variable' blocks
そのような場合、このファイルはmodules/apollo/vars.tf
の下にまったく同じファイルではないでしょうか?
私はmodules/apollo/vars.tf
がモジュールに必要な必要な変数を定義していると思いました。私はそれがenv-dev/services/apollo/
の下の "根"レベルの中で必要とは思わなかった。これを行う "より良い"方法があれば、私はすべての耳です。
├── env-dev
│ └── services
│ └── apollo
│ ├── main.tf
│ ├── terraform.tfvars
│ └── vars.tf # Do i need this?
├── env-test
├── global
├── mgmt
└── modules
├── apollo
│ ├── main.tf
│ ├── user_data.tpl
│ └── vars.tf
└── defaults
└── main.tf
ENV-DEV /サービス/アポロ/ terraform.tfvars
instance_type = "t2.medium"
ENV-PROD /サービス/アポロ/ terraform.tfvars
instance_type = "t2.large"
モジュール/アポロ/ vars.tf
variable "instance_type" {
description = "EC2 Instance Type"
}
modules/apollo/main.tf
resource "aws_instance" "instance" {
...
instance_type = "${var.instance_type}"
...
}