Terraform - 构建输出地图
Terraform - Building an Output Map
我想看看是否可以构建包含 Azure 资源组所有属性的输出映射。我创建的前两个输出工作得很好,但是有没有办法创建一个映射结构,将它们全部输出到一个结构中?
例如,一张显示资源组名称、位置、标签的地图?
变量定义
variable "resource_groups" {
description = "Resource groups"
type = map(object({
name = string
location = string
tags = map(string)
}))
}
主要
resource "azurerm_resource_group" "resource_groups" {
for_each = var.resource_groups # name of RG is unique
name = each.value["name"]
location = each.value["location"]
tags = each.value["tags"]
}
输出
###Resource Group Outputs###
output "resource_group_ids_map" {
value = { for r in azurerm_resource_group.resource_groups : r.name => r.id }
description = "A map of resource group IDs."
}
output "resource_group_tags_map" {
value = { for r in azurerm_resource_group.resource_groups : r.name => r.tags }
description = "A map of resource group tags"
}
玩过这个之后,我相信我找到了答案。下面是新代码。
output "resource_group_map" {
value = {
for rg in azurerm_resource_group.resource_groups :
rg.name => ({
id = rg.id
location = rg.location
tags = rg.tags
})
}
description = "A map of all resource group values."
}
这是我使用 for 循环在一个结构中输出资源组的所有属性的代码。
output "resource_group_map" {
value = {
for rg in azurerm_resource_group.resource_groups :
rg.name => ({
id = rg.id
location = rg.location
tags = rg.tags
})
}
description = "A map of all resource group values."
}
我想看看是否可以构建包含 Azure 资源组所有属性的输出映射。我创建的前两个输出工作得很好,但是有没有办法创建一个映射结构,将它们全部输出到一个结构中?
例如,一张显示资源组名称、位置、标签的地图?
变量定义
variable "resource_groups" {
description = "Resource groups"
type = map(object({
name = string
location = string
tags = map(string)
}))
}
主要
resource "azurerm_resource_group" "resource_groups" {
for_each = var.resource_groups # name of RG is unique
name = each.value["name"]
location = each.value["location"]
tags = each.value["tags"]
}
输出
###Resource Group Outputs###
output "resource_group_ids_map" {
value = { for r in azurerm_resource_group.resource_groups : r.name => r.id }
description = "A map of resource group IDs."
}
output "resource_group_tags_map" {
value = { for r in azurerm_resource_group.resource_groups : r.name => r.tags }
description = "A map of resource group tags"
}
玩过这个之后,我相信我找到了答案。下面是新代码。
output "resource_group_map" {
value = {
for rg in azurerm_resource_group.resource_groups :
rg.name => ({
id = rg.id
location = rg.location
tags = rg.tags
})
}
description = "A map of all resource group values."
}
这是我使用 for 循环在一个结构中输出资源组的所有属性的代码。
output "resource_group_map" {
value = {
for rg in azurerm_resource_group.resource_groups :
rg.name => ({
id = rg.id
location = rg.location
tags = rg.tags
})
}
description = "A map of all resource group values."
}