Terraform:如何从一个资源块创建多个AWS子网?

Kar*_*hik 0 amazon-web-services terraform

我正在尝试从一个资源块创建多个子网,但出现以下错误

错误:aws_subnet.private:cidr_block必须是单个值,而不是列表

主文件

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}"
  }
}
Run Code Online (Sandbox Code Playgroud)

变量

variable "private_subnet" {
  type    = "list"
  default = []
}
Run Code Online (Sandbox Code Playgroud)

开发者

private_subnet = ["10.0.2.0/24", "10.0.3.0/24"]
Run Code Online (Sandbox Code Playgroud)

EFe*_*eit 5

您必须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
}
Run Code Online (Sandbox Code Playgroud)

aws_subnet根据将count每个资源块通过terraform评估时的枚举,这会将单个资源扩展为两个,每个值的值略有不同。