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"
},
]