# Variables # ===================== variable "tenant" { description = "Tenant informations" type = any default = { prefix = "" } } variable "networks" { description = "Networks definitions" type = any default = {} } variable "networks_defaults" { description = "Network default definitions" type = any default = {} } # Resources # ===================== locals { defaults = { name_prefix = var.tenant.prefix #interface_prefix = "vibr_${var.tenant.prefix}" #interface_prefix = "vibr_" interface_prefix = null mode = "nat" domain = "local" gw4 = "192.168.100.1" mask = "24" nat_enable = false vip = [] subnets = [] } networks_defaults = merge(local.defaults, var.networks_defaults) } module "cloud_networks" { source = "../../modules/virt_network" for_each = { for k, v in var.networks : k => merge(local.networks_defaults, v) } name = "${each.value.name_prefix}${each.key}" bridge = each.value.interface_prefix == null ? "" : substr("${each.value.interface_prefix}${each.key}", 0 , 15) mode = each.value.mode domain = each.value.domain gw4 = each.value.gw4 mask = each.value.mask nat_enable = each.value.nat_enable vip = each.value.vip subnets = each.value.subnets } # Output # ===================== output "networks" { value = module.cloud_networks }