通过环境变量文件 .tfvars 在 Terraform 中的 variables.tf 中提到的变量值



如何传递variable.tf中提到的"列表"或"映射"类型的变量的值。下面提到的input.tfvars文件中的语法是否有任何错误?

目标不是对variables.tfmain.tf文件中的任何值进行硬编码。在Terraform.io文档中,我验证了值可以以这种格式提供。

这是来自网站:列表是显式或隐式定义的:

# implicitly by using brackets [...]
variable "cidrs" { default = [] }
# explicitly
variable "cidrs" { type = "list" }

您可以在terraform.tfvars文件中指定列表:

cidrs = [ "10.0.0.0/16", "10.1.0.0/16" ]

现在,当我尝试做

terraform plan -var-file=input.tfvars 

它无法从 TFvars 文件中读取变量值,并显示以下错误:

错误:模块

根:模块 VPC:
未设置
必需变量"vpccidr" 模块 VPC:未设置必需变量"vpcname">

variables.tf文件如下所示:

variable "vpccidr" { type = "list"}
variable "vpcname" { type = "list" }

input.tfvars文件如下所示:

vpccidr=[ "10.1.0.0/16", "10.2.0.0/16", "10.3.0.0/16" ]
vpcname=[ "vpc1", "vpc2", "vpc3" ]

main.tf文件如下所示:

module "vpc"{
source = "modules/network/vpc"
}

modules/network下的VPC模块具有以下配置文件main.tf和上述variables.tf中提到的变量文件:

resource "aws_vpc" "customVpc" {
count = "${length(var.vpccidr)}"
cidr_block = "${element(var.vpccidr, count.index)}"
tags {
count = "${length(var.vpcname)}"
Name = "${element(var.vpcname, count.index)}"
}
}          

你需要将变量传递给你的模块,即

module "vpc"{
source = "modules/network/vpc"
vpccidr = "${var.vpccidr}"
vpcname = "${var.vpcname}"
}

最新更新