Terraform cidrsubnet 功能故障排除
Terraform cidrsubnet function troubleshoot
我遇到这样一种情况,我正在尝试使用 Terraform 中的 cidrsubnet 函数动态创建一些子网。这是我定义它的方式:
data "aws_availability_zones" "availability_zones" {
exclude_names = [
"us-west-2c",
"us-west-2d"
]
}
locals {
availability_zone_names = "${data.aws_availability_zones.availability_zones.names}"
}
resource "aws_subnet" "public_subnets" {
count = "${length(local.availability_zone_names)}"
vpc_id = "${aws_vpc.vpc.id}"
cidr_block = "${cidrsubnet(aws_vpc.vpc.cidr_block, 11, count.index)}"
availability_zone = "${local.availability_zone_names[count.index]}"
map_public_ip_on_launch = true
tags {
Name = "${var.name}-public.${local.availability_zone_names[count.index]}"
}
}
我只是想在该地区的两个可用区中创建这些子网(因此我排除了 2 个可用区。应用此代码后,我在我尝试的子网之一中得到了我想要的结果创建。然而,我试图获取地址 10.32.2.0/27 的另一个子网的 cidr 块地址,但 cidrsubnet 函数正在生成 10.32.0.32/27。任何我出错的建议都会有所帮助。
计划产出
aws_subnet.public_subnets[1]
id: <computed>
arn: <computed>
assign_ipv6_address_on_creation: "false"
availability_zone: "us-west-2b"
availability_zone_id: <computed>
cidr_block: "10.32.0.32/27"
如果您想使用前缀 /27
并希望您的子网是:
10.32.0.0/27
10.32.2.0/27
10.32.4.0/27
等等,然后你必须将你的索引乘以 16,因为这些 CIDR 范围不是连续的:
cidr_block = "${cidrsubnet(aws_vpc.vpc.cidr_block, 11, count.index * 16)}"
我遇到这样一种情况,我正在尝试使用 Terraform 中的 cidrsubnet 函数动态创建一些子网。这是我定义它的方式:
data "aws_availability_zones" "availability_zones" {
exclude_names = [
"us-west-2c",
"us-west-2d"
]
}
locals {
availability_zone_names = "${data.aws_availability_zones.availability_zones.names}"
}
resource "aws_subnet" "public_subnets" {
count = "${length(local.availability_zone_names)}"
vpc_id = "${aws_vpc.vpc.id}"
cidr_block = "${cidrsubnet(aws_vpc.vpc.cidr_block, 11, count.index)}"
availability_zone = "${local.availability_zone_names[count.index]}"
map_public_ip_on_launch = true
tags {
Name = "${var.name}-public.${local.availability_zone_names[count.index]}"
}
}
我只是想在该地区的两个可用区中创建这些子网(因此我排除了 2 个可用区。应用此代码后,我在我尝试的子网之一中得到了我想要的结果创建。然而,我试图获取地址 10.32.2.0/27 的另一个子网的 cidr 块地址,但 cidrsubnet 函数正在生成 10.32.0.32/27。任何我出错的建议都会有所帮助。
计划产出
aws_subnet.public_subnets[1]
id: <computed>
arn: <computed>
assign_ipv6_address_on_creation: "false"
availability_zone: "us-west-2b"
availability_zone_id: <computed>
cidr_block: "10.32.0.32/27"
如果您想使用前缀 /27
并希望您的子网是:
10.32.0.0/27
10.32.2.0/27
10.32.4.0/27
等等,然后你必须将你的索引乘以 16,因为这些 CIDR 范围不是连续的:
cidr_block = "${cidrsubnet(aws_vpc.vpc.cidr_block, 11, count.index * 16)}"