resource "vcd_vapp_vm" "vm" { for_each = local.servers provider = vcd.al[each.value.vcd_key] vapp_name = vcd_vapp.vapp[each.value.vcd_key].name name = each.key computer_name = each.key catalog_name = each.value.config["catalog_name"] template_name = each.value.config["template_name"] memory = each.value.config["memory"] cpus = each.value.config["cpu"] network { type = "org" name = each.value.network_routed ip_allocation_mode = lookup(each.value.config["network"], "mode", "auto") == "manual" ? "MANUAL" : "POOL" is_primary = true # Устанавливаем IP, только если режим "manual" ip = lookup(each.value.config["network"], "mode", "auto") == "manual" ? lookup(each.value.config["network"], "ip", null) : null } override_template_disk { bus_type = "paravirtual" size_in_mb = each.value.config["osDisk"] bus_number = 0 unit_number = 0 } customization { enabled = true #force = var.forceRecustomization || !contains(var.servers, var.servers[count.index]) #force = var.forceRecustomization force = false allow_local_admin_password = true auto_generate_password = false admin_password = local.admin_password } set_extra_config { key = "disk.EnableUUID" value = "TRUE" } guest_properties = { "user-data" = base64encode(templatefile("${path.module}/templates/cloudinit.yaml", { hostname = each.key username = each.value.config["init_username"] ssh_authorized_keys = each.value.config["ssh_authorized_keys"] })) } # Игноирование изменений дисков (PVC - Named Disks) lifecycle { ignore_changes = [ disk, # Игнорирует изменения всех дисков ] } depends_on = [ vcd_vapp_org_network.routed_network ] } resource "vcd_vm_internal_disk" "vmdisk" { for_each = local.disks provider = vcd.al[each.value.vcd_key] vapp_name = vcd_vapp.vapp[each.value.vcd_key].name vm_name = each.value.vm_name bus_type = "paravirtual" bus_number = 0 unit_number = each.value.unit_num size_in_mb = each.value.disk_size allow_vm_reboot = true depends_on = [ vcd_vapp_vm.vm ] }