feat: add gated Compose deploy and make inventory the host source of truth
Keep sanitized Compose sources in-repo with a confirmation-gated Ansible playbook, add repo-wide validation, tighten runbook ownership/STOP/review metadata, and archive stale research docs. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -32,19 +32,13 @@ only — do not mutate production state. When live state conflicts with a
|
||||
runbook's assumptions, `STOP` and report; never invent missing parameters or
|
||||
bypass failed checks. The spec is [`RUNBOOKS.md`](RUNBOOKS.md).
|
||||
|
||||
## Active hosts (quick map)
|
||||
## Active hosts
|
||||
|
||||
| Host | Role | SSH | Facts |
|
||||
|------|------|-----|--------|
|
||||
| **mx2.windy.me** | mailcow (`/opt/mail`, project `cow`) | `ssh -4 windy@mx2.windy.me` | [hosts/mx2.windy.me.md](hosts/mx2.windy.me.md) |
|
||||
| **us2.wsvc.info** | Vaultwarden + Traefik (+ Soft Serve, …) | `ssh -4 windy@us2.wsvc.info` | [hosts/us2.wsvc.info.md](hosts/us2.wsvc.info.md) |
|
||||
| **hk2.chans.xyz** | PowerDNS auth ns1 (`/opt/pdns`) | `ssh -4 windy@hk2.chans.xyz` | [hosts/hk2.chans.xyz.md](hosts/hk2.chans.xyz.md) |
|
||||
| **synapse.chans.xyz** | Matrix ESS (Synapse + MAS + Element) on K3s | `ssh -4 windy@synapse.chans.xyz` | [hosts/synapse.chans.xyz.md](hosts/synapse.chans.xyz.md) |
|
||||
| **dns.windy.lan** | AdGuard Home LAN DNS + Mihomo explicit proxy | `ssh -4 windy@192.168.66.36` | [hosts/dns.windy.lan.md](hosts/dns.windy.lan.md) |
|
||||
| **gfw.windy.lan** | OpenWrt LAN gateway / OpenClash | `ssh -4 root@192.168.66.1` | [hosts/gfw.windy.lan.md](hosts/gfw.windy.lan.md) |
|
||||
| **gw** | EdgeRouter X primary LAN gateway | `ssh -4 zhiqiang@192.168.66.254` | [hosts/gw.md](hosts/gw.md) |
|
||||
| **ubnt** | UniFi Network Controller | `ssh -4 windy@192.168.66.46` | [hosts/ubnt.md](hosts/ubnt.md) |
|
||||
| **hass.windy.lan** | Home Assistant (HAOS, LAN55) | `ssh hassio@hass.windy.lan` | [hosts/hass.windy.lan.md](hosts/hass.windy.lan.md) |
|
||||
The canonical machine list (roles, SSH endpoints, Ansible coverage, status) is
|
||||
[`inventory/hosts.md`](inventory/hosts.md) — the single human-readable source
|
||||
of truth. Per-host facts live in [`hosts/`](hosts/). The Ansible execution
|
||||
inventory is [`ansible/inventory/hosts.yml`](ansible/inventory/hosts.yml). Do
|
||||
not maintain a second copy of the machine table here.
|
||||
|
||||
### Public services
|
||||
|
||||
@@ -152,8 +146,11 @@ Bills, rough notes, and personal clutter stay in the Obsidian vault. This repo h
|
||||
```
|
||||
AGENTS.md / agent.md # this entry (agent.md → AGENTS.md)
|
||||
RUNBOOKS.md # runbook spec (six-field model, naming, review rules)
|
||||
inventory/hosts.md # machine index
|
||||
inventory/hosts.md # machine index (human-readable source of truth)
|
||||
ansible/ # playbooks, roles, sanitized control-plane inventory
|
||||
compose/ # repo-owned non-secret Compose sources (+ .env.example)
|
||||
hosts/ # per-host facts
|
||||
runbooks/ # step-by-step ops (README.md = index, _template.md = template)
|
||||
docs/ # upstream doc indexes / design notes
|
||||
scripts/validate-repo.sh # repo-wide validation (run before merging)
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user