Terraform如何输出for_each循环创建资源的属性值
Terraform for_each创建子网的输出配置解决方案
报错根因
使用for_each创建的资源集合为map类型,而你用到的splat 表达式(.*)仅支持count创建的列表类型资源集合,因此无法直接通过*.name的方式提取属性。
正确output配置
你可以通过for表达式遍历map类型的资源集合,按需提取目标属性:
1. 同时输出所有子网的名称和地址前缀(键值对格式,键为子网名)
output "azurerm_subnet_info" { value = { for subnet in azurerm_subnet.snets : subnet.name => subnet.address_prefixes } }
2. 输出所有子网名称的列表
output "azurerm_subnet_names" { value = [for subnet in azurerm_subnet.snets : subnet.name] }
3. 输出所有子网地址前缀的列表
output "azurerm_subnet_prefixes" { value = [for subnet in azurerm_subnet.snets : subnet.address_prefixes] }
4. 输出子网信息对象列表(每个元素包含name和address_prefixes属性)
output "azurerm_subnet_list" { value = [for subnet in azurerm_subnet.snets : { name = subnet.name address_prefixes = subnet.address_prefixes }] }
内容的提问来源于stack exchange,提问作者Gokulnath Kumar
相关产品推荐
相关产品推荐

