CEa*_*onn 2 amazon-web-services terraform terraform-provider-aws
我有一张像这样的地图
variable "mysubnets" {
type = map(string)
default = {
"subnet1" = "10.1.0.0/24"
"subnet2" = "10.1.1.0/24"
}
}
Run Code Online (Sandbox Code Playgroud)
在我的模块中,我尝试将子网放置在同一 vpc 的不同可用区中
data "aws_availability_zones" "azs" {
state = "available"
}
resource "aws_subnet" "test-subnets" {
for_each = var.mysubnets
cidr_block = "${each.value}"
vpc_id = aws_vpc.myvpc.id
availability_zone = data.aws_availability_zones.azs.names[index("${each.value}")]
tags = {
Name = "${each.key}"
}
}
Run Code Online (Sandbox Code Playgroud)
我可以从地图中获取键和值,没有问题,但是当尝试选择可用区域时,我找不到如何更改值。有没有办法获取地图的索引,或者为递增的数字创建一个计数器?
你的数据源被称为azs,而不是available。所以应该是:
availability_zone = data.aws_availability_zones.azs.names[index("${each.value}")]
Run Code Online (Sandbox Code Playgroud)
更新:
要index与您一起使用var.mysubnets,您可以执行以下操作:
resource "aws_subnet" "test-subnets" {
for_each = {for idx, subnet in keys(var.mysubnets):
idx => {
name = subnet
cidr = var.mysubnets[subnet]
}
}
cidr_block = each.value.cidr
vpc_id = aws_vpc.myvpc.id
availability_zone = element(data.aws_availability_zones.azs.names, each.key)
tags = {
Name = each.value.name
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8533 次 |
| 最近记录: |