# 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: ```bash source envs/beelink/env # or: source envs/hetzner/env ``` ### 2. Deploy VMs ```bash bin/incusos-proxmox --proxmox envs/hetzner/proxmox.yaml \ envs/hetzner/lab-production.yaml ``` ### 3. Deploy services with --config ```bash 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 |