incus-contrib/envs
Maarten 4617de8869 Update all metadata and documentation for new repo structure
- .gitignore: envs/*/env, envs/*/proxmox.yaml instead of old incusos/ paths
- .claude/rules/*.md: all paths: directives updated from incusos/ to bin/
- .claude/skills/*.md: helper script paths updated
- CLAUDE.md: structure diagram, capabilities paths, context loading table
- README.md: structure, quick start examples with new paths
- bin/TESTING.md, bin/README.md: command examples updated
- envs/hetzner/setup/: all guide and script path references updated
- bin/examples/proxmox.yaml.example: updated copy instructions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 18:53:26 +01:00
..
beelink Add per-environment config files and split env secrets 2026-03-03 18:40:42 +01:00
hetzner Update all metadata and documentation for new repo structure 2026-03-03 18:53:26 +01:00
README.md Add per-environment config files and split env secrets 2026-03-03 18:40:42 +01:00

README.md

Environment Configurations

Per-environment connection configs, secrets, and deployment settings. Each subdirectory represents a physical host (or host type) with its own network topology, storage backend, and resource sizing.

Directory layout

envs/
├── beelink/
│   ├── env                    # Secrets: PROXMOX_TOKEN_SECRET, etc. (gitignored)
│   ├── proxmox.yaml           # Proxmox connection (gitignored)
│   ├── proxmox.yaml.example   # Connection template (LAN, vmbr0, local-lvm)
│   ├── lab-cluster.yaml       # 3-node cluster (4C/4G/50G)
│   ├── awx.yaml               # AWX deployment settings
│   ├── haproxy.yaml           # HAProxy deployment settings
│   └── observability.yaml     # Monitoring stack settings
└── hetzner/
    ├── env                    # Secrets (gitignored)
    ├── proxmox.yaml           # Proxmox connection (gitignored)
    ├── proxmox.yaml.example   # Connection template (WireGuard, vmbr1, local-zfs)
    ├── lab-cluster.yaml       # 3-node cluster (8C/16G/100G)
    ├── lab-production.yaml    # OC + 3-node cluster
    ├── awx.yaml               # AWX deployment settings
    ├── haproxy.yaml           # HAProxy deployment settings
    ├── observability.yaml     # Monitoring stack settings
    └── setup/                 # Host provisioning (Proxmox install guide + script)
        ├── README.md
        ├── hetzner-setup.md
        ├── hetzner-lab-guide.md
        └── proxmox-setup

How to use

1. Source the environment

Each environment has its own env file with the same variable names. Source the one for the host you're targeting:

source envs/beelink/env    # or: source envs/hetzner/env

2. Deploy VMs

bin/incusos-proxmox --proxmox envs/hetzner/proxmox.yaml \
                    envs/hetzner/lab-production.yaml

3. Deploy services with --config

bin/deploy-awx --config envs/hetzner/awx.yaml --deploy
bin/deploy-haproxy --config envs/hetzner/haproxy.yaml --deploy
bin/deploy-observability --config envs/hetzner/observability.yaml --deploy

Adding a new environment

  1. Create a new subdirectory: envs/myhost/
  2. Copy proxmox.yaml.example from an existing env and edit
  3. Create an env file with your secrets (same variable names)
  4. Create lab YAML files sized for your hardware
  5. Create awx.yaml, haproxy.yaml, observability.yaml with your IPs

Key differences between environments

Setting Beelink Hetzner
Host 192.168.1.10 (LAN) 10.10.0.1 (WireGuard)
Method ssh api
Bridge vmbr0 vmbr1 (private)
Storage local-lvm local-zfs
VLAN 69 (none)
Gateway 192.168.100.1 10.10.0.1
VM IPs 192.168.102.x/22 10.10.0.x/24
VM cores 4 8
VM memory 4-8 GiB 16 GiB
VM disk 50 GiB 100 GiB