Update proxmox.tf

This commit is contained in:
2025-08-26 18:23:57 +00:00
parent 73c3603883
commit d1304f045f

View File

@ -64,32 +64,32 @@ locals {
}) })
) )
} }
# Função recursiva para deep merge # Função recursiva para merge de mapas/listas
deep_merge = function("deep_merge", [any, any], any, <<-EOT deep_merge = {
base, override = args merge = function(any, any) any => (
result = {} local._deep_merge_impl(args[0], args[1])
for k in setunion(keys(base), keys(override)) { )
if can(base[k]) && can(override[k]) { _deep_merge_impl = function(any, any) any => (
if type(base[k]) == list && type(override[k]) == list { let base = args[0]
result[k] = concat(base[k], override[k]) let override = args[1]
} else if type(base[k]) == map && type(override[k]) == map { let result = {}
result[k] = deep_merge(base[k], override[k]) in merge(
} else { result,
result[k] = override[k] { for k in setunion(keys(base), keys(override)) :
k => (
contains([list, map], type(base[k])) && contains([list, map], type(override[k])) ?
(type(base[k]) == list ? concat(base[k], override[k]) : local.deep_merge._deep_merge_impl(base[k], override[k]))
:
can(override[k]) ? override[k] : base[k]
)
} }
} else if can(override[k]) { )
result[k] = override[k] )
} else { }
result[k] = base[k]
} merged_cloudinit = { for vm_name, vm_cfg in local.vm_cloudinits : vm_name => local.deep_merge._deep_merge_impl(local.base_cloudinit, vm_cfg) }
}
return result
EOT
)
# Resultado final = deep merge do base + vm
merged_cloudinit = { for vm_name, vm_cfg in local.vm_cloudinits : vm_name => local.deep_merge(local.base_cloudinit, vm_cfg) }
} }