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



我在映射变量中有一个VPC cidr,它在Terraform中定义。我想做的是在映射变量中使用一个特定的值,以便在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" {}

并使用CCD_ 2而不是CCD_ 3

最新更新