160 lines
4.4 KiB
HCL
160 lines
4.4 KiB
HCL
# 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"
|
||
# }
|
||
# ]
|
||
# }
|
||
}
|
||
} |