Files
terraform-libvirt-lab/locals.tf
T
2025-12-26 15:47:40 +03:00

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
}
}
}