Добавить terraform/vmware/main.tf

This commit is contained in:
2025-12-05 12:41:03 +00:00
parent b6eb50517d
commit 75867ce8e1

78
terraform/vmware/main.tf Normal file
View File

@@ -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, логика будет сложнее
}
}
}
}