From 8c793d3d5949afe00576d2bd7adab7a9ce175762 Mon Sep 17 00:00:00 2001 From: Vezpi Date: Mon, 24 Mar 2025 14:52:18 +0000 Subject: [PATCH] use nested map to deploy 2 VM per node --- terraform/projects/multiple-vm/main.tf | 37 ++++++++++++++++++++------ 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/terraform/projects/multiple-vm/main.tf b/terraform/projects/multiple-vm/main.tf index 3a05379..b02d419 100644 --- a/terraform/projects/multiple-vm/main.tf +++ b/terraform/projects/multiple-vm/main.tf @@ -1,15 +1,36 @@ module "pve_vm" { source = "../../modules/pve_vm" - for_each = toset(data.proxmox_virtual_environment_nodes.pve_nodes.names) - node_name = each.value - vm_name = "${each.value}-vm" - vm_cpu = 2 - vm_ram = 2048 - vm_vlan = 66 + for_each = local.vm_list + node_name = each.value.node_name + vm_name = each.value.vm_name + vm_cpu = each.value.vm_cpu + vm_ram = each.value.vm_ram + vm_vlan = each.value.vm_vlan } -data "proxmox_virtual_environment_nodes" "pve_nodes" {} +locals { + vm_attr = { + "master" = { ram = 2048, cpu = 2, vlan = 66 } + "worker" = { ram = 1024, cpu = 1, vlan = 66 } + } + + vm_list = { + for vm in flatten([ + for node in data.proxmox_virtual_environment_nodes.pve_nodes.names : [ + for role, config in local.vm_attr : { + node_name = node + vm_name = "${role}-${node}" + vm_cpu = config.cpu + vm_ram = config.ram + vm_vlan = config.vlan + } + ] + ]) : vm.vm_name => vm + } +} + +data "proxmox_virtual_environment_nodes" "pve_nodes" {} output "vm_ip" { - value = { for k, v in module.pve_vm : "${k}-vm" => v.vm_ip } + value = { for k, v in module.pve_vm : k => v.vm_ip } } \ No newline at end of file