36 lines
1.1 KiB
Terraform
36 lines
1.1 KiB
Terraform
locals {
|
|
dot_env_file_path = ".env"
|
|
dot_env_regex = "(?m:^\\s*([^#\\s]\\S*)\\s*=\\s*[\"']?(.*[^\"'\\s])[\"']?\\s*$)"
|
|
dot_env = { for tuple in regexall(local.dot_env_regex, file(local.dot_env_file_path)) : tuple[0] => sensitive(tuple[1]) }
|
|
|
|
uri = local.dot_env["LIBVIRT_DEFAULT_URI"]
|
|
|
|
cidrs = [
|
|
var.network_ipv4_cidr,
|
|
var.network_ipv6_cidr,
|
|
]
|
|
image_source = "${var.image_pool_folder}/${var.image_filename}"
|
|
user_templates = merge(
|
|
{ node = "node.yaml.tpl" },
|
|
)
|
|
|
|
ipv4_prefix = tonumber(split("/", var.network_ipv4_cidr)[1])
|
|
ipv4_gateway = cidrhost(var.network_ipv4_cidr, 1)
|
|
ipv6_prefix = tonumber(split("/", var.network_ipv6_cidr)[1])
|
|
ipv6_gateway = cidrhost(var.network_ipv6_cidr, 1)
|
|
|
|
node_addrs = merge(
|
|
{ node = { ipv4 = var.node_ipv4, ipv6 = var.node_ipv6 } },
|
|
)
|
|
|
|
nodes = { for key, addr in local.node_addrs :
|
|
key => {
|
|
ipv4 = addr.ipv4
|
|
ipv6 = addr.ipv6
|
|
image = libvirt_volume.node_image.id
|
|
user_data = data.template_file.user_data[key].rendered
|
|
network_config = data.template_file.network_config[key].rendered
|
|
}
|
|
}
|
|
}
|