# proxmox-lab.yaml - Full 4-VM IncusOS lab deployment
#
# Deploys:
#   - 1x Operations Center (management UI)
#   - 3x Incus nodes (cluster: 1 init + 2 join)
#
# Usage:
#   incusos-proxmox --dry-run examples/proxmox-lab.yaml   # Preview
#   incusos-proxmox examples/proxmox-lab.yaml              # Deploy
#   incusos-proxmox --cleanup examples/proxmox-lab.yaml    # Tear down

proxmox:
  host: 192.168.1.10            # Proxmox host IP or hostname
  node: pve                     # Proxmox node name
  storage: local-lvm            # VM disk storage
  iso_storage: local            # ISO/image storage
  bridge: vmbr0                 # Network bridge
  # pool: IncusLab              # Resource pool (optional, for isolation)
  method: ssh                   # ssh (default) or api
  ssh_user: root                # SSH user for ssh method
  # api_token_id: automation@pve!deploy   # For api method

defaults:
  cores: 4
  memory: 8192                  # MiB (minimum: 4096)
  disk: 64                      # GiB (minimum: 50)
  channel: stable
  start_vmid: 200               # Auto-assign VMIDs from here

vms:
  # Operations Center -- management dashboard for the cluster.
  # Requires a client certificate for web UI access.
  - name: ops-center
    app: operations-center
    apply_defaults: true
    cores: 2
    memory: 4096
    disk: 50

  # Incus cluster leader -- initializes the cluster, creates the default
  # ZFS pool and network bridge via apply_defaults.
  - name: incus-main
    app: incus
    apply_defaults: true
    cluster: my-cluster
    cluster_role: init

  # Incus cluster joiner #1 -- joins the cluster created by incus-main.
  # apply_defaults is false because the leader pushes configuration.
  - name: incus-node-02
    app: incus
    apply_defaults: false
    cluster: my-cluster
    cluster_role: join

  # Incus cluster joiner #2
  - name: incus-node-03
    app: incus
    apply_defaults: false
    cluster: my-cluster
    cluster_role: join
