diff --git a/terraform/vmware/main.tf b/terraform/vmware/main.tf index 67b6d9b..5f6d4fd 100644 --- a/terraform/vmware/main.tf +++ b/terraform/vmware/main.tf @@ -1,73 +1,25 @@ -# --- Подключение к vCenter --- -variable "vsphere_user" { type = string, sensitive = true } -variable "vsphere_password" { type = string, sensitive = true } -variable "vsphere_server" { type = string } - -# --- Инфраструктура --- -variable "vsphere_datacenter" { type = string } -variable "vsphere_cluster" { type = string } -variable "vsphere_datastore" { type = string } -variable "vsphere_network" { type = string } - -# --- Параметры ВМ --- -variable "vm_template" { type = string } -variable "vm_name_prefix" { - type = string - default = "DC-2025" - # ВАЖНО: Имя компьютера в Windows (NetBIOS) не должно превышать 15 символов! +data "vsphere_datacenter" "dc" { + name = var.vsphere_datacenter } -variable "vm_count" { type = number, default = 1 } -variable "vm_cpu" { type = number, default = 4 } # Для DC лучше 4 vCPU -variable "vm_ram" { type = number, default = 8192 } # Для DC 2025 лучше 8 ГБ -variable "vm_disk_size" { type = number, default = 60 } - -# --- Специфично для Windows и Контроллера домена --- -variable "admin_password" { - type = string - description = "Пароль локального Администратора (нужен для входа Ansible)" - sensitive = true +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 } -variable "vm_ips" { - type = list(string) - description = "Список статических IP для серверов (по количеству vm_count)" -} - -variable "vm_netmask" { - type = number - description = "Маска подсети (например, 24)" - default = 24 -} - -variable "vm_gateway" { - type = string - description = "IP-адрес шлюза" -} - -variable "primary_dns" { - type = list(string) - description = "IP текущего контроллера домена (обязательно для ввода в домен)" -} - -# --- Провайдер --- -provider "vsphere" { - user = var.vsphere_user - password = var.vsphere_password - vsphere_server = var.vsphere_server - allow_unverified_ssl = true -} - -# --- Data Sources --- -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}" + name = var.vm_name resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id datastore_id = data.vsphere_datastore.datastore.id @@ -92,27 +44,17 @@ resource "vsphere_virtual_machine" "vm" { clone { template_uuid = data.vsphere_virtual_machine.template.id - # Настройка ОС для WINDOWS customize { windows_options { - computer_name = "${var.vm_name_prefix}-${count.index + 1}" - admin_password = var.admin_password # Задаем пароль админа для Ansible - # timezone = 145 # Опционально: часовой пояс (145 = Moscow Standard Time) + computer_name = var.vm_name + admin_password = var.admin_password } - network_interface { - # Берем IP из списка по индексу создаваемой машины - ipv4_address = var.vm_ips[count.index] + ipv4_address = var.vm_ip ipv4_netmask = var.vm_netmask } - ipv4_gateway = var.vm_gateway - dns_server_list = var.primary_dns # Указываем на текущий Контроллер Домена + dns_server_list = [var.primary_dns] } } -} - -# --- Вывод IP-адресов --- -output "deployed_vm_ips" { - value = vsphere_virtual_machine.vm[*].default_ip_address } \ No newline at end of file