2023-10-18 12:00:20 -04:00

113 lines
2.4 KiB
HCL

# 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
# }
# }