如何解决我正在获取count.index的地形始终为0
Terraform v0.12.29 provider.aws v3.7.0
Terraform我的count.index总是为0。
10.x0.0.0 / 23
resource "aws_subnet" "public" {
count = length(var.availability_zones)
vpc_id = aws_vpc.default.id
cidr_block = cidrsubnet(format("%s.%s.%s",join(".",slice(split(".",var.cidr_block),2)),count.index,split(".",var.cidr_block)[3]),var.public_newbits,count.index)
availability_zone = element(var.availability_zones,count.index)
map_public_ip_on_launch = true
tags = merge(map("Name","${var.namespace}-${var.environment}-public-${count.index + 1}"),var.tags)
}
地形计划
两个子网中的cidr_block 值为0。
# aws_subnet.public[0] will be created
+ resource "aws_subnet" "public" {
+ arn = (known after apply)
+ assign_ipv6_address_on_creation = false
+ availability_zone = "ap-southeast-1a"
+ availability_zone_id = (known after apply)
+ cidr_block = "10.x0.0.0/27"
+ id = (known after apply)
+ ipv6_cidr_block_association_id = (known after apply)
+ map_public_ip_on_launch = true
+ owner_id = (known after apply)
+ vpc_id = (known after apply)
}
# aws_subnet.public[1] will be created
+ resource "aws_subnet" "public" {
+ arn = (known after apply)
+ assign_ipv6_address_on_creation = false
+ availability_zone = "ap-southeast-1b"
+ availability_zone_id = (known after apply)
+ cidr_block = "10.x0.0.32/27"
+ id = (known after apply)
+ ipv6_cidr_block_association_id = (known after apply)
+ map_public_ip_on_launch = true
+ owner_id = (known after apply)
+ vpc_id = (known after apply)
}
解决方法
在这里回答我的错误。 cidrsubnet()非常棘手,我花了一些时间来理解它。
resource "aws_subnet" "public" {
count = length(var.availability_zones)
vpc_id = aws_vpc.default.id
cidr_block = cidrsubnet(var.cidr_block,var.public_newbits,count.index)
availability_zone = element(var.availability_zones,count.index)
map_public_ip_on_launch = true
tags = merge( var.tags,map("Name","${var.environment}-${var.namespace}-mr-public-${count.index + 1}"))
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。