From 810946c758c035d5c2e36c1df9da727c632f44f0 Mon Sep 17 00:00:00 2001 From: ogrechko Date: Fri, 22 May 2026 13:39:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20terraform/main.tf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- terraform/main.tf | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/terraform/main.tf b/terraform/main.tf index 247b509..bbbdade 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -7,10 +7,24 @@ terraform { } } +# --- Креды vCenter (передаются скрыто через Environment) --- variable "vsphere_user" {} variable "vsphere_password" {} variable "vsphere_server" {} +# --- Переменные, которые будут запрашиваться через Survey --- +variable "vm_ip" {} +variable "vm_gateway" {} +variable "vm_cpu" {} +variable "vm_ram" {} +variable "vm_disk_size" {} +variable "vsphere_datacenter" {} +variable "vsphere_datastore" {} +variable "vsphere_pool" {} +variable "vsphere_network" {} +variable "vsphere_template" { default = "debian-minimal-template" } + +# --- Настройка провайдера --- provider "vsphere" { user = var.vsphere_user password = var.vsphere_password @@ -18,37 +32,39 @@ provider "vsphere" { allow_unverified_ssl = true } +# --- Поиск ресурсов в vCenter --- data "vsphere_datacenter" "dc" { - name = "Datacenter" # ВАШ ДАТАЦЕНТР + name = var.vsphere_datacenter } data "vsphere_datastore" "datastore" { - name = "datastore1" # ВАШ ДАТАСТОР + name = var.vsphere_datastore datacenter_id = data.vsphere_datacenter.dc.id } data "vsphere_resource_pool" "pool" { - name = "Cluster/Resources" # ВАШ КЛАСТЕР ИЛИ ПУЛ РЕСУРСОВ + name = var.vsphere_pool datacenter_id = data.vsphere_datacenter.dc.id } data "vsphere_network" "network" { - name = "VM Network" # ВАША СЕТЬ + name = var.vsphere_network datacenter_id = data.vsphere_datacenter.dc.id } data "vsphere_virtual_machine" "template" { - name = "debian-minimal-template" # ИМЯ ВАШЕГО ШАБЛОНА + name = var.vsphere_template datacenter_id = data.vsphere_datacenter.dc.id } +# --- Создание ВМ --- resource "vsphere_virtual_machine" "npm_vm" { - name = "nginx-proxy-manager" + name = "npm-${replace(var.vm_ip, ".", "-")}" # Имя в vCenter будет, например: npm-192-168-1-50 resource_pool_id = data.vsphere_resource_pool.pool.id datastore_id = data.vsphere_datastore.datastore.id - num_cpus = 1 - memory = 1024 # 1 ГБ ОЗУ более чем достаточно + num_cpus = var.vm_cpu + memory = var.vm_ram guest_id = data.vsphere_virtual_machine.template.guest_id network_interface { @@ -58,7 +74,7 @@ resource "vsphere_virtual_machine" "npm_vm" { disk { label = "disk0" - size = 8 # 8 ГБ диска (можно меньше, если шаблон меньше) + size = var.vm_disk_size thin_provisioned = true } @@ -71,10 +87,10 @@ resource "vsphere_virtual_machine" "npm_vm" { domain = "local" } network_interface { - ipv4_address = "192.168.1.100" # УКАЖИТЕ ЖЕЛАЕМЫЙ СТАТИЧЕСКИЙ IP - ipv4_netmask = 24 + ipv4_address = var.vm_ip + ipv4_netmask = 24 # При необходимости маску тоже можно вынести в Survey } - ipv4_gateway = "192.168.1.1" # УКАЖИТЕ ВАШ ШЛЮЗ + ipv4_gateway = var.vm_gateway dns_server_list = ["8.8.8.8", "1.1.1.1"] } }