如何在地形中为有限的索引运行count.index



是否有任何方法可以为某些索引值而不是为列表中的所有值运行count.index。我有一个列表变量

variable "subnets_cidr" {
type = list
default = ["172.17.1.0/24", "172.17.2.0/24", "172.17.3.0/24","172.17.10.0/24","172.17.11.0/24","172.17.12.0/24"]
}

和子网

# Subnets : Public
resource "aws_subnet" "public" {
count = length(var.subnets_cidr)
vpc_id = aws_vpc.terra_vpc.id
cidr_block = element(var.subnets_cidr,count.index)
availability_zone = element(var.azs,count.index)
map_public_ip_on_launch = true
tags = {
Name = element(var.pub_sub_names, count.index)
}
}

上面的代码创建了6个子网,但我不想这样,我想限制只创建3个子网。我想像count.index[1:3]那样对count.index变量进行切片,但没有成功。

还有下面的路由表关联代码,它关联了所有子网,但在这里我也想限制子网的数量。例如说前3个子网。

# Route table association with public subnets
resource "aws_route_table_association" "a" {
count = length(var.subnets_cidr)
subnet_id      = element(aws_subnet.public.*.id,count.index)
route_table_id = aws_route_table.public_rt.id
}

您可以对不同的子网使用本地值,而不是使用计数将子网用于一个子网范围,将子网两个子网用于其他子网范围

locals {
teams = {
"subnetone" = {
subnet1 = "172.17.1.0/24"
subnet2 = "172.17.2.0/24"
subnet3 = "172.17.3.0/24"
},
"subnettwo" = {
subnet4 = "172.17.10.0/24"
subnet5 = "172.17.11.0/24"
subnet6 = "172.17.12.0/24"
} 
}
}
resource "aws_subnet" "public" {
for_each = local.teams.subnetone
cidr_block = each.value
vpc_id = "vpc-09c37360e8b599296"
}

最新更新