如何在Terraform中获取for_each循环条件的输出?

4
我有一个带有for_each循环条件的资源块,并且我想要输出资源块的名称和地址前缀。

main.tf:

resource "azurerm_subnet" "snets" {
    for_each = var.subnets
    name = each.key
    resource_group_name = azurerm_resource_group.rg.name
    virtual_network_name = azurerm_virtual_network.vnet.name
    address_prefixes = [each.value]
}

我尝试过类似的方法,但它没有起作用。

output.tf

output "azurerm-subnet" {
    value = azurerm_subnet.snets.*.name
}

错误:

│ Error: Unsupported attribute
│
│   on output.tf line 2, in output "azurerm-subnet":
│    2:     value = azurerm_subnet.snets.*.name
│
│ This object does not have an attribute named "name".
1个回答

11

可以通过 list 构造函数和 for 表达式最轻松地实现此操作。我们遍历 azurerm_subnet.snets 的导出属性的 map,并在每次迭代中返回 name 值:

output "azurerm_subnets" {
  value = [ for subnet in azurerm_subnet.snets : subnet.name ]
}

输出变量 azurerm_subnets 将是一个 list(string),其中每个元素都是子网名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接