locals { # Lê o ficheiro base (que está no mesmo módulo) base_cloudinit = yamldecode(file("${path.module}/cloud-init-base.yaml")) # Renderiza cada ficheiro por VM vm_cloudinits = { for vm in var.proxmox_k8s_vms : vm.name => yamldecode( templatefile("${path.module}/cloud-init-vm.yaml.tftpl", { extra_packages = try(vm.extra_packages, []) extra_users = try(vm.extra_users, []) extra_runcmd = try(vm.extra_runcmd, []) }) ) } # Função recursiva para deep merge deep_merge = function("deep_merge", [any, any], any, < local.deep_merge(local.base_cloudinit, vm_cfg) } } resource "proxmox_virtual_environment_file" "vm_user_data" { for_each = local.merged_cloudinit node_name = "fenix" datastore_id = "local-snippets" content_type = "snippets" source_raw { file_name = "cloud-init-iac-k8s-${each.key}.yaml" data = yamlencode(each.value) } }