playbooks/site.yml imports the docker_host role, but it didn't exist, so ansible-lint's syntax-check failed on a clean checkout — breaking CLAUDE.md's "main must always work" / "Never skip lint" (top open finding O1 from the 2026-06-11 review). Scaffold docker_host as a proper placeholder via the prescribed mechanism (make new-role): filled meta/main.yml + README, an honest no-task tasks/main.yml documenting planned scope (Docker engine + Compose, daemon hardening, nftables.d container rules per ADR-004/020), and the standard molecule scenario. This preserves site.yml's full-standard-state intent rather than dropping the play. Update STATUS.md (docker_host moves from "Not in git" to "scaffolded, no tasks") and the role/playbook READMEs to match. make lint: 0 failures, 0 warnings; check-tags OK. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
14 lines
769 B
Markdown
14 lines
769 B
Markdown
# playbooks/
|
|
|
|
Top-level orchestration playbooks. No inline vars — configuration comes from
|
|
`group_vars/` / `host_vars/` (see CLAUDE.md).
|
|
|
|
- `site.yml` — full standard state: applies `base` to all hosts and `docker_host`
|
|
to docker hosts. **Note:** `base` is only partially built (its `firewall` concern)
|
|
and `docker_host` is scaffolded with no tasks yet, so this is incomplete — see `STATUS.md`.
|
|
- `workstation.yml` — applies the `dev_env` role (interactive developer environment)
|
|
to the `control` group; built and applied to `ubongo` (see `STATUS.md`).
|
|
- `bootstrap.yml` — first-run setup for a host that may not have Python yet;
|
|
self-contained (does not depend on the roles).
|
|
|
|
Run via `make check PLAYBOOK=<name>` then `make deploy PLAYBOOK=<name>`.
|