74 lines
1.3 KiB
HCL
74 lines
1.3 KiB
HCL
|
|
# 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
|
|
}
|
|
|
|
|