locals { instance_map = var.instance_mode == "single" ? { main = var.instance } : var.instances vm_created = { for k, v in local.instance_map : k => { service_name = v.service_name vm_name = v.vm_name node_name = v.node_name ipv4_address = module.vm-n8n[k].vm_ipv4_address vm_tags = concat( try(v.vm_tags, []), ["terraform", "docker", v.service_name, "ip-${replace(module.vm-n8n[k].vm_ipv4_address, ".", "-")}"] ) } } } module "vm-n8n" { for_each = local.instance_map source = "./modules/proxmox_ubuntu_cloudinit_template" vm_name = each.value.vm_name node_name = each.value.node_name node_datastore = var.vm_defaults.node_datastore bridge = var.vm_defaults.bridge vm_cpu = coalesce(try(each.value.vm_cpu, null), var.vm_defaults.vm_cpu) vm_ram = coalesce(try(each.value.vm_ram, null), var.vm_defaults.vm_ram) vm_size = coalesce(try(each.value.vm_size, null), var.vm_defaults.vm_size) vm_bios = var.vm_defaults.vm_bios vm_machine = var.vm_defaults.vm_machine vm_tags = concat( try(each.value.vm_tags, []), ["terraform", "docker", each.value.service_name] ) vm_user_sshkey = var.vm_defaults.vm_user_sshkey } module "inventory" { source = "./modules/proxmox_ansible_inventory" filename = "${abspath("${path.root}/..")}/ansible/inventory/inventory.yml" instances = local.vm_created } module "vm_data" { source = "./modules/proxmox_vm_data" filename = "${abspath("${path.root}/..")}/terraform/vm_data.yml" instances = local.vm_created }