diff --git a/main.tf b/main.tf index f765990..030782c 100644 --- a/main.tf +++ b/main.tf @@ -1,3 +1,21 @@ +locals { + ipv4_addresses = flatten([ + for server_key, server in var.server : [ + for k, v in coalescelist(proxmox_virtual_environment_vm.server[server.name].ipv4_addresses, []) : + v if length(regexall("^(lo|docker|veth).*", proxmox_virtual_environment_vm.server[server.name].network_interface_names[k])) == 0 + ] + ]) +} + +locals { + ipv6_addresses = flatten([ + for server_key, server in var.server : [ + for k, v in coalescelist(proxmox_virtual_environment_vm.server[server.name].ipv6_addresses, []) : + v if length(regexall("^(lo|docker|veth).*", proxmox_virtual_environment_vm.server[server.name].network_interface_names[k])) == 0 + ] + ]) +} + resource "proxmox_virtual_environment_vm" "server" { for_each = { for row in var.server : row.name => row } @@ -95,12 +113,7 @@ resource "restapi_object" "ucs_server" { "position" : var.ucs_zones[try(each.value.dns_zone, var.server_dns_zone)], "properties" : { "name" : each.value.name, - "a" : concat( - [ - for k, v in flatten(coalesce(proxmox_virtual_environment_vm.server[each.value.name].ipv4_addresses, [])) : - v if length(regexall(proxmox_virtual_environment_vm.server[each.value.name].network_interface_names[k], "^(lo|docker).*")) == 0 - ], - ), + "a" : concat(local.ipv4_addresses, local.ipv6_addresses), } }) } diff --git a/outputs.tf b/outputs.tf index ef90176..8645afe 100644 --- a/outputs.tf +++ b/outputs.tf @@ -1,5 +1,9 @@ output "output" { value = { - for server_key, server in proxmox_virtual_environment_vm.server : server_key => server + for server_key, server in proxmox_virtual_environment_vm.server : server_key => merge( + server, + { ipv4_addresses = local.ipv4_addresses }, + { ipv6_addresses = local.ipv6_addresses } + ) } }