1
在三種不同的環境下,我希望能夠根據環境動態設置變量。在我下面的例子中,假設dev和prod的實例類型不同。我無法在模塊中引用instance_type
,除非我的vars.tf
文件與我的terraform.tfvars
並列。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-刺/服務/阿波羅/ 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}"
...
}