Files
kubespray-dualstack/terraform/locals.tf
T
2025-08-06 03:09:06 +03:00

40 lines
1.5 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(
{ control_plane = "control-plane.yaml.tpl" },
{ for ip in var.worker_ipv4s : "worker_${replace(ip, "\\.", "-")}" => "worker.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(
{ control_plane = { ipv4 = var.control_plane_ipv4, ipv6 = var.control_plane_ipv6 } },
{ for idx, ip in var.worker_ipv4s :
"worker_${replace(ip, "\\.", "-")}" => { ipv4 = ip, ipv6 = var.worker_ipv6s[idx] }
}
)
nodes = { for key, addr in local.node_addrs :
key => {
ipv4 = addr.ipv4
ipv6 = addr.ipv6
image = contains(keys(libvirt_volume.worker_images), key) ? libvirt_volume.worker_images[key].id : libvirt_volume.control_plane_image.id
user_data = data.template_file.user_data[key].rendered
network_config = data.template_file.network_config[key].rendered
}
}
}