mirror of
https://gitea.fenix-dev.com/fenix-gitea-admin/iac-opentofu-private.git
synced 2025-10-27 15:53:06 +00:00
Update proxmox.tf
This commit is contained in:
46
proxmox.tf
46
proxmox.tf
@ -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) }
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user