# lab-production.yaml - Production-quality lab for Hetzner (OC + 3-node cluster)
#
# Deploys 1 Operations Center instance and 3 Incus nodes for OC-managed clustering.
# Sized for a Hetzner dedicated server with generous resources.
#
# Architecture:
#   hz-oc        (910) - Operations Center dashboard and monitoring
#   hz-node-01   (911) - Cluster init node + OVN control plane host (150G disk)
#   hz-node-02   (912) - Cluster member
#   hz-node-03   (913) - Cluster member
#
# Network: 10.10.0.0/24 on vmbr1 (private bridge, NAT to internet).
# OVN overlay (once configured): 10.10.10.0/24 internal, 10.10.0.200+ external.
#
# RAM budget: ~248 GiB of 256 GiB (8 GiB OC + 3×80 GiB nodes; ~8 GiB reserved for Proxmox host)
#
# Usage:
#   bin/incusos-proxmox --proxmox envs/hetzner/proxmox.yaml \
#                       envs/hetzner/lab-production.yaml
#
# After deployment, follow notes/production-lab-guide.md for:
#   - Cluster formation (section 4)
#   - OVN networking (section 6)
#   - Workload deployment (sections 7-9)
#
# Connection settings from proxmox.yaml in this directory.

defaults:
  cores: 16
  memory: 81920            # ~80 GiB per node (3 nodes × 80 = 240 GiB + 8 for OC = 248 GiB total)
  disk: 100
  start_vmid: 910

vms:
  - name: hz-oc
    app: operations-center
    apply_defaults: true
    cores: 4
    memory: 8192            # OC needs very little RAM
    ip: 10.10.0.110/24

  - name: hz-node-01
    app: incus
    apply_defaults: false         # OC manages cluster formation + storage/network setup
    disk: 150                     # extra space for OVN control plane container
    ip: 10.10.0.111/24

  - name: hz-node-02
    app: incus
    apply_defaults: false         # joining node: cluster join creates pool entry
    ip: 10.10.0.112/24

  - name: hz-node-03
    app: incus
    apply_defaults: false         # joining node: cluster join creates pool entry
    ip: 10.10.0.113/24
