From 75867ce8e1ad0dd4e8b22030b1724fb2363b45e5 Mon Sep 17 00:00:00 2001 From: ogrechko Date: Fri, 5 Dec 2025 12:41:03 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20terraform/vmware/main.tf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- terraform/vmware/main.tf | 78 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 terraform/vmware/main.tf diff --git a/terraform/vmware/main.tf b/terraform/vmware/main.tf new file mode 100644 index 0000000..90fb1e5 --- /dev/null +++ b/terraform/vmware/main.tf @@ -0,0 +1,78 @@ +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, логика будет сложнее + } + } + } +} \ No newline at end of file