2022-03-21 23:27:54 -04:00

148 lines
2.5 KiB
HCL

# Variables
# =====================
variable "cloud" {
description = "Cloud informations"
type = any
default = {}
}
variable "tenant" {
description = "Tenant informations"
type = any
default = {}
}
variable "deploy" {
description = "Deployments configuration"
type = map
default = {}
}
variable "stack" {
description = "Deployment options"
type = any
default = {}
}
# Resources
# =====================
locals {
def_deploy = {
stack = "main"
pools = false
volumes = false
networks = false
instances = false
images = false
}
base_stack = {
pool = {}
image = {}
volume = {}
network = {}
instance = {}
pools = {}
images = {}
volumes = []
networks = {}
instances = []
}
deploy = merge ( local.def_deploy, var.deploy )
stack = { for k, v in local.base_stack:
k => try(
merge (
local.base_stack[k],
var.cloud[k],
var.stack[k]
),
var.stack[k],
var.cloud[k]
,local.base_stack[k]
)
}
}
# Modules
# =====================
module "cloud_pools" {
source = "../virt_pools"
count = local.deploy.pools ? 1: 0
pools = local.stack.pools
pools_defaults = local.stack.pool
}
module "cloud_images" {
source = "../virt_images"
count = local.deploy.images ? 1: 0
depends_on = [module.cloud_pools]
images = local.stack.images
images_defaults = local.stack.image
}
module "cloud_volumes" {
source = "../virt_volumes"
count = local.deploy.volumes ? 1: 0
depends_on = [module.cloud_pools]
tenant = var.tenant
volumes = local.stack.volumes
volumes_defaults = local.stack.volume
}
module "cloud_networks" {
source = "../virt_networks"
count = local.deploy.networks ? 1: 0
tenant = var.tenant
networks = local.stack.networks
networks_defaults = local.stack.network
}
module "cloud_instances" {
source = "../virt_instances"
count = local.deploy.instances ? 1: 0
depends_on = [module.cloud_networks, module.cloud_images, module.cloud_volumes]
tenant = var.tenant
networks = local.stack.networks
instances = local.stack.instances
instances_defaults = local.stack.instance
}
# Output
# =====================
output "cloud_pools" {
value = module.cloud_pools
}
output "cloud_images" {
value = module.cloud_images
}
output "cloud_volumes" {
value = module.cloud_volumes
}
output "cloud_networks" {
value = module.cloud_networks
}
output "cloud_instances" {
value = module.cloud_instances
}
# output "DEBUG" {
# value = local.stack
# }