provider "vsphere" { user = var.vsphere_user password = var.vsphere_password vsphere_server = var.vsphere_server allow_unverified_ssl = true # Отключить проверку SSL сертификата } # --- Сбор данных о существующей инфраструктуре --- data "vsphere_datacenter" "dc" { name = var.vsphere_datacenter } data "vsphere_datastore" "datastore" { name = var.vsphere_datastore datacenter_id = data.vsphere_datacenter.dc.id } data "vsphere_compute_cluster" "cluster" { name = var.vsphere_cluster datacenter_id = data.vsphere_datacenter.dc.id } data "vsphere_network" "network" { name = var.vsphere_network datacenter_id = data.vsphere_datacenter.dc.id } data "vsphere_virtual_machine" "template" { name = var.vm_template datacenter_id = data.vsphere_datacenter.dc.id } # --- Создание Виртуальных Машин --- resource "vsphere_virtual_machine" "vm" { count = var.vm_count name = "${var.vm_name_prefix}-${count.index + 1}" resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id datastore_id = data.vsphere_datastore.datastore.id # Ресурсы num_cpus = var.vm_cpu memory = var.vm_ram guest_id = data.vsphere_virtual_machine.template.guest_id # Включаем горячее добавление ресурсов (опционально) cpu_hot_add_enabled = true memory_hot_add_enabled = true network_interface { network_id = data.vsphere_network.network.id adapter_type = data.vsphere_virtual_machine.template.network_interface_types[0] } disk { label = "disk0" size = var.vm_disk_size thin_provisioned = data.vsphere_virtual_machine.template.disks[0].thin_provisioned } clone { template_uuid = data.vsphere_virtual_machine.template.id # Настройка ОС (Customization) # ВАЖНО: Для работы customization в шаблоне должен быть установлен open-vm-tools или perl customize { linux_options { host_name = "${var.vm_name_prefix}-${count.index + 1}" domain = "local.domain" # Замените на свой домен } network_interface { ipv4_address = null # null означает DHCP ipv4_netmask = null # Если нужен статический IP, логика будет сложнее } } } }