如何根据布尔条件创建n个AWS公有子网?配置仅生成1个的问题
问题解决:pubsubnet为true时创建3个AWS公有子网
问题原因
当前aws_subnet.public_subnets的count参数在满足条件时固定返回1,导致仅创建1个子网,而非根据var.cidr-subnets的列表长度生成对应数量的子网:
count = var.pubsubnet && length(var.cidr-subnets) != 0 ? 1 : 0
修复方案
将count的返回值改为length(var.cidr-subnets),这样当pubsubnet为true且cidr-subnets非空时,会根据列表长度创建对应数量的子网:
修改modules/vpc/vpc.tf中的aws_subnet.public_subnets资源配置:
resource "aws_subnet" "public_subnets" { count = var.pubsubnet && length(var.cidr-subnets) != 0 ? length(var.cidr-subnets) : 0 vpc_id = aws_vpc.vaya-vpc.id cidr_block = var.cidr-subnets[count.index] map_public_ip_on_launch = true availability_zone = element(data.aws_availability_zones.available.names, count.index) tags = { Name = format("%s-%s", var.subnet_ids[count.index], var.env) } }
额外验证
确保var.subnet_ids的长度与var.cidr-subnets一致(当前dev.tfvars中两者均为3个元素,符合要求),避免count.index越界报错。
内容的提问来源于stack exchange,提问作者Vamsi
相关产品推荐
相关产品推荐

