我试图从一个资源 block 创建多个子网,但出现以下错误
Error: aws_subnet.private: cidr_block must be a single value, not a list
main.tf
resource "aws_subnet" "private" {
vpc_id = "${aws_vpc.vpcname.id}"
cidr_block = "${var.private_subnet}"
availability_zone = "${data.aws_availability_zones.available.names[count.index]}"
map_public_ip_on_launch = false
tags {
Name = "${var.private}"
Environment = "${terraform.workspace}"
}
}
变量.tf
variable "private_subnet" {
type = "list"
default = []
}
dev.tfvars
private_subnet = ["10.0.2.0/24", "10.0.3.0/24"]
最佳答案
您必须创建多个 aws_subnet
资源,方法是利用 count
参数为您的 var.private_subnet
列表中的每个条目创建一个资源:
resource "aws_subnet" "private" {
count = "${length(var.private_subnet)}"
vpc_id = "${aws_vpc.vpcname.id}"
cidr_block = "${var.private_subnet[count.index]}"
availability_zone = "${data.aws_availability_zones.available.names[count.index]}"
map_public_ip_on_launch = false
}
这将单个 aws_subnet
资源扩展为两个,当每个资源 block 由 terraform 评估时,每个资源基于 count
的枚举具有略微不同的值。
关于amazon-web-services - Terraform:如何从一个资源 block 创建多个 aws 子网?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51196693/