113 lines
2.4 KiB
HCL
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
|
|
# }
|
|
# }
|
|
|