如何在 terraform 中获取 for_each 循环条件的输出?
How to get output for for_each loop condition within terraform?
我有一个带有 for_each 循环条件的资源块,我想输出资源块的名称和 address_prefixes。
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".
这可以通过 list
构造函数和 for
表达式轻松实现。我们遍历导出属性的 map
azurerm_subnet.snets
和 return 每次迭代的 name
值:
output "azurerm_subnets" {
value = [ for subnet in azurerm_subnet.snets : subnet.name ]
}
并且输出 azurerm_subnets
将是一个 list(string)
,其中每个元素都是子网名称。
我有一个带有 for_each 循环条件的资源块,我想输出资源块的名称和 address_prefixes。
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".
这可以通过 list
构造函数和 for
表达式轻松实现。我们遍历导出属性的 map
azurerm_subnet.snets
和 return 每次迭代的 name
值:
output "azurerm_subnets" {
value = [ for subnet in azurerm_subnet.snets : subnet.name ]
}
并且输出 azurerm_subnets
将是一个 list(string)
,其中每个元素都是子网名称。