# 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 |
