Terraform Flatten Map of Map

1. Input

# variables.tfvars
  vnets ={
    "vn-erp-app" = {
      sn-web = "10.10.10.0/24",
      sn-app = "10.10.11.0/24"
      sn-db = "10.10.12.0/24"
    },
    "vn-crm-app" = {
      sn-web = "10.10.20.0/24",
      sn-app = "10.10.21.0/24"
      sn-db = "10.10.22.0/24"
    }
  }
# variables.tf

variable "vnets"{
    type = map(map(string))
}

2. Transformation

# main.tf

output "c_simplemapvariable_5" {
  value = flatten([
      for vnet, network in var.vnets : [
        for subnet_name,subnet in network : {
          subnet_name = subnet_name
          subnet = subnet
          vnet = vnet
        }
    ]
  ])
}

3. Output

c_simplemapvariable_5 = [
  {
    "subnet" = "10.10.21.0/24"
    "subnet_name" = "sn-app"
    "vnet" = "vn-crm-app"
  },
  {
    "subnet" = "10.10.22.0/24"
    "subnet_name" = "sn-db"
    "vnet" = "vn-crm-app"
  },
  {
    "subnet" = "10.10.20.0/24"
    "subnet_name" = "sn-web"
    "vnet" = "vn-crm-app"
  },
  {
    "subnet" = "10.10.11.0/24"
    "subnet_name" = "sn-app"
    "vnet" = "vn-erp-app"
  },
  {
    "subnet" = "10.10.12.0/24"
    "subnet_name" = "sn-db"
    "vnet" = "vn-erp-app"
  },
  {
    "subnet" = "10.10.10.0/24"
    "subnet_name" = "sn-web"
    "vnet" = "vn-erp-app"
  },
]