mirror of
https://gitea.fenix-dev.com/fenix-gitea-admin/iac-opentofu-private.git
synced 2025-10-27 15:53:06 +00:00
Merge pull request 'Update proxmox.tf' (#147) from fenix-admin into main
Reviewed-on: fenix-gitea-admin/iac-teste#147
This commit is contained in:
46
proxmox.tf
46
proxmox.tf
@ -65,31 +65,31 @@ 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) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user