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