【问题标题】:Terraform: How to create multiple aws subnets from one resource block?Terraform:如何从一个资源块创建多个 aws 子网?
【发布时间】:2018-12-14 06:05:42
【问题描述】:

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

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

ma​​in.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}"
  }
}

variable.tf

variable "private_subnet" {
  type    = "list"
  default = []
}

dev.tfvars

private_subnet = ["10.0.2.0/24", "10.0.3.0/24"]

【问题讨论】:

    标签: amazon-web-services terraform


    【解决方案1】:

    您必须通过利用count 参数为var.private_subnet 列表中的每个条目创建一个资源来创建多个aws_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 资源扩展为两个,每个资源块根据 terraform 评估每个资源块时的 count 枚举值略有不同。

    【讨论】:

    • 这行得通,但依赖于下面列出的私有子网的其他资源块代码不起作用。 resource "aws_nat_gateway" "nat" { allocation_id = "${aws_eip.eipname.id}" subnet_id = "${aws_subnet.private.id}" depends_on = ["aws_internet_gateway.gw"] tags { Name = "${var.natgateway}" Environment = "${terraform.workspace}" } }
    【解决方案2】:

    private_subnet 是一个列表,所以你应该选择一个元素,例如

    cidr_block = "${element(var.private_subnet,count.index)}"

    【讨论】:

      【解决方案3】:

      还添加数据模块以获取区域的可用区

      data "aws_availability_zones" "available" {}
      

      例如

      availability_zone       = "${data.aws_availability_zones.available.names[count.index]}"
      

      【讨论】:

        猜你喜欢
        • 2022-07-01
        • 1970-01-01
        • 2022-09-28
        • 1970-01-01
        • 2020-07-18
        • 2022-01-03
        • 2019-05-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多