# Variables # ============ variable "tenant" { description = "Tenant informations" type = map default = { prefix = "" } } variable "volumes" { description = "List of volumes" type = list(any) default = [] } variable "volumes_defaults" { description = "Default settings for volumes" type = map default = {} } # Main # ============ locals { defaults = { prefix = var.tenant.prefix pool = "default", pool_dir = "/virt", size_gb = 10, format = "qcow2" persistant = false base_pool = "default", base_file = "", url = "" file = "" } volumes_defaults = merge(local.defaults, var.volumes_defaults) } module "cloud_volume" { source = "../../modules_libvirt/virt_volume" for_each = { for v in var.volumes: v.name => merge(local.volumes_defaults, v) } name = "${each.value.prefix}${each.value.name}" pool = each.value.pool size_gb = each.value.size_gb format = each.value.format persistant = each.value.persistant base_pool = each.value.base_pool base_file = each.value.base_file url = each.value.url file = each.value.file } # Output # ============ output "volumes" { value = module.cloud_volume }