Update proxmox.tf

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

View File

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