代码之家  ›  专栏  ›  技术社区  ›  Rio

TerraForm创建简单的变量循环,以后可以使用

  •  0
  • Rio  · 技术社区  · 6 年前

    我是TerraForm开发的新手,尝试创建简单的变量循环,稍后可以使用,如下所示:

    这对我非常有效,并按预期创建了两个子网。

    variable "availability_zones" {
      description = "Available Availability Zones"
      type = "list"
      default = [ "us-east-1a", "us-east-1b" ]
    }
    variable "public_subnet_cidr" {
      description = "CIDR for Public Subnets"
      type = "list"
      default = [ "10.240.32.0/26", "10.240.32.64/26" ]
    
    # Define Public Subnet
    resource "aws_subnet" "public-subnets" {
      count = 2
      vpc_id = "${aws_vpc.default.id}"
      cidr_block = "${element(var.public_subnet_cidr, count.index)}"
      availability_zone = "${element(var.availability_zones, count.index)}"
    
      tags {
        Name = "${element(var.availability_zones, count.index)}_${element(var.public_subnet_cidr, count.index)}"
      }
    }
    

    但是,当尝试将这些子网与默认路由相关联时,我不知道如何从先前创建的子网中获取单个子网ID。最后是下面的代码。是否有方法获取单个子网的subnet.id?

    # Assign Default Public Route Table to Public Subnet
    resource "aws_route_table_association" "default_public_route" {
      subnet_id = "${aws_subnet.public-subnets.id}"     <<-- This is the line I am trying to figure out
      route_table_id = "${aws_route_table.default_public_route_table.id}"
    }
    

    事先谢谢。 山姆

    1 回复  |  直到 6 年前
        1
  •  1
  •   ydaetskcoR    6 年前

    你很接近如何使用它。这里有一个 walk through 这对你有帮助。

    resource "aws_route_table_association" "default_public_route" {
      count = 2
      subnet_id = "${element(aws_subnet.public-subnets.*.id, count.index)}"
      route_table_id = "${aws_route_table.default_public_route_table.id}"
    }