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."
}