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}"
...
}