148 lines
2.5 KiB
HCL
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
|
|
# }
|