Files
opentofu-standart-vm/cluster/locals.tf
Iurii Anfinogenov 326572de4d add rocky image
2026-05-04 06:30:51 +00:00

160 lines
4.4 KiB
HCL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# nodes — описание виртуальных машин
#
# Общая идея:
# - каждая VM может иметь несколько сетевых интерфейсов (network_devices)
# - каждый интерфейс полностью описывает свою сеть (bridge, VLAN, IP, gateway)
# - порядок элементов в network_devices важен:
# [0] → eth0 (основной интерфейс, обычно с default gateway)
# [1] → eth1
# [2] → eth2
#
# network_devices:
# - список сетевых интерфейсов VM
#
# поля:
#
# bridge:
# - имя Proxmox bridge (например vmbr0, vmbr1)
# - ОБЯЗАТЕЛЬНО
#
# vlan_id:
# - опционально
# - если НЕ указан → интерфейс untagged
# - если указан → интерфейс будет в VLAN (например 20 → зависит от настройки Proxmox bridge)
#
# ip:
# - IPv4 адрес без CIDR (например "192.168.20.11")
# - если не указан → будет использован DHCP (если доступен в сети)
#
# cidr:
# - маска сети (например 24)
# - используется вместе с ip → итог: ip/cidr
#
# gateway:
# - опционально
# - указывать ТОЛЬКО для одного интерфейса (обычно первого)
# - задаёт default route внутри VM
#
# ВАЖНО:
# - gateway должен быть только у одного интерфейса
# - порядок network_devices критичен (eth0, eth1 и т.д.)
# - неправильный порядок → потеря доступа к VM
#
#
# cloudinit:
# - опциональный параметр
# - имя cloud-init файла
# - ищется в:
# cloud-config/<имя>.yml (root)
# - если не найден → fallback:
# modules/node/cloud-config/default.yml
#
# пример:
# - cloudinit = "worker.yml" → cloud-config/worker.yml
# - не указан → default.yml
#
#
# пример одной сети (single NIC):
#
# network_devices = [
# {
# bridge = "vmbr0"
# vlan_id = 20
# ip = "192.168.20.11"
# cidr = 24
# gateway = "192.168.20.1"
# }
# ]
#
#
# пример двух сетей:
#
# network_devices = [
# {
# bridge = "vmbr0"
# vlan_id = 20
# ip = "192.168.20.23"
# cidr = 24
# gateway = "192.168.20.1"
# },
# {
# bridge = "vmbr1"
# ip = "192.168.22.26"
# cidr = 24
# }
# ]
#
#
# РЕКОМЕНДАЦИИ:
# - первый интерфейс (eth0) → management сеть
# - второй интерфейс → storage / overlay / secondary
# - не задавать gateway на вторичных интерфейсах
#
#
# ПОВЕДЕНИЕ:
# - ip_config генерируется автоматически из network_devices
# - соответствие: порядок массива = порядок интерфейсов
#
locals {
nodes = {
k8s-master-1 = {
cloudinit = "rocky.yml"
image_file = "import/rocky9.qcow2"
index = 1
cpu = var.worker_cpu
memory = 4092
disk = var.worker_disk
datastore = var.worker_datastore
network_devices = [
{
bridge = var.node_bridge
vlan_id = 20
ip = "192.168.20.11"
cidr = 24
gateway = "192.168.20.1"
}
]
}
# k8s-worker-1 = {
# cloudinit = "worker.yml"
# index = 2
# cpu = var.worker_cpu
# memory = 8192
# disk = var.worker_disk
# datastore = var.worker_datastore
# network_devices = [
# {
# bridge = var.node_bridge
# vlan_id = 20
# ip = "192.168.20.22"
# cidr = 24
# gateway = "192.168.20.1"
# }
# ]
# },
# k8s-worker-2 = {
# cloudinit = "worker.yml"
# index = 3
# cpu = var.worker_cpu
# memory = 8192
# disk = var.worker_disk
# datastore = var.worker_datastore
# network_devices = [
# {
# bridge = var.node_bridge
# vlan_id = 20
# ip = "192.168.20.23"
# cidr = 24
# gateway = "192.168.20.1"
# },
# {
# bridge = "vmbr0"
# }
# ]
# }
}
}