75 lines
1.2 KiB
HCL
75 lines
1.2 KiB
HCL
|
|
# 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 = "../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
|
|
}
|
|
|