# Variables # ===================== variable "tenant" { description = "Tenant informations" type = any default = { prefix = "" } } variable "instances" { description = "Instances definitions" type = any default = [] } variable "instances_defaults" { description = "Instances default definitions" type = any default = {} } variable "networks" { description = "Known networks to find domain" type = any default = {} } # Resources # ===================== locals { pre_default = { network = "default" domain = "no_domain22" } default_network = try(var.networks[var.instances_defaults.default_network], null) != null ? var.instances_defaults.default_network : local.pre_default.network networks = local.default_network != null ? [{ name = "${var.tenant.prefix}${local.default_network}" }] : [] domain = try( var.networks[local.default_network].domain, local.pre_default.domain) # Recommended default flavor default = { number = 1 instance_pool = "default" disk_gb = 14 flavor = "default" memory = 1024 vcpu = 1 disks = [] volumes = [] name_fqdn = true wait_for_lease = false password_hash = "" authorized_key = "" user = "" metadata = {} prefix = var.tenant.prefix default_network = local.default_network networks = local.networks domain = local.domain } instances_defaults = merge(local.default, var.instances_defaults) } module "virt_instances" { source = "../../modules/virt_instance" for_each = { for v in var.instances : v.name => merge(local.instances_defaults, v) } name = each.value.name prefix = each.value.prefix name_fqdn = each.value.name_fqdn metadata = each.value.metadata domain = each.value.domain number = each.value.number instance_pool = each.value.instance_pool images_pool = each.value.images_pool disk_gb = each.value.disk_gb flavor = each.value.flavor memory = each.value.memory vcpu = each.value.vcpu disks = each.value.disks volumes = each.value.volumes networks = each.value.networks wait_for_lease = each.value.wait_for_lease user = each.value.user authorized_key = each.value.authorized_key password_hash = each.value.password_hash } # Outputs # ===================== output "instances" { value = module.virt_instances } # output "DEBUG" { # value = { # NORMAL = module.virt_instances # INSTANCES = var.instances # INSTANCES_defaults = var.instances_defaults # } # }