在 Terraform cidrsubnet 函数中使用映射变量中的值

Using value in a map variable in Terraform cidrsubnet function

我在 Terraform 中定义的映射变量中有一个 VPC cidr。我想要做的是在该映射变量中使用特定值,以便在 Terraform 中动态创建子网。任何关于如何实现这一点的建议都会非常有帮助。以下是我的变量的定义方式:

VPC CIDR

variable "vpc_cidr" {
  default {
    us-east-1 = "192.1.0.0/16"
    us-west-1 = "192.2.0.0/16"
    us-west-2 = "192.3.0.0/16"
  }
}

AWS 子网

resource "aws_subnet" "public_subnets" {
  count = "${length(local.availability_zone_names)}"
  vpc_id = "${aws_vpc.vpc.id}"
  cidr_block = "${cidrsubnet("pulling aws vpc cidr from map variable", newbits, netnum)}"
  availability_zone = "${local.availability_zone_names[count.index]}"
  map_public_ip_on_launch = true
}

老实说,我不太确定你定义变量的语法。我宁愿这样说(尽管你的版本可能也是正确的):

variable "vpc_cidr" {
  type = map
  default = {
    "us-east-1" = "192.1.0.0/16"
    "us-west-1" = "192.2.0.0/16"
    "us-west-2" = "192.3.0.0/16"
  }
}

然后:

  cidr_block = "${cidrsubnet(var.vpc_cidr[YOUR_CURRENT_REGION], newbits, netnum)}"

不确定您是否在某处将 YOUR_CURRENT_REGION 定义为变量。否则您可能需要从数据源中提取:

data "aws_region" "current_region" {}

并使用 current_region 而不是 YOUR_CURRENT_REGION