mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 03:38:23 +00:00
The mirror failover turned the four apt locations into regex locations. nginx only synthesises the `/debian` -> `/debian/` redirect for prefix locations, so the slash-less form started answering 404. Inside a runner `deb.debian.org` is DNS-hijacked to this frontend and the URL reachability test probes exactly that form, which took the debian, fedora and centos workspace jobs down. The locations are prefix locations again, byte for byte as before. The only thing that stays is the error path: the named location picks up the already-rewritten `$uri` and rewrites it once more onto the mirror repo, so the failover survives without a capture variable. Measured against a simulated hijack: both bare paths 200 again, all four suite indexes 200, and with `apt-debian` pointed at a dead remote `dists/bookworm/InRelease` still arrives with 151 kB through apt-debian-mirror. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Compose Configuration 🧩
This directory holds the static configuration assets consumed by the top-level compose.yml of the local development and CI testing stack.
Scope 📋
- The directory MUST contain only files that are bind-mounted into a
service defined in
compose.yml. - The directory MUST NOT host application configuration that belongs to
an Ansible role. Per-role compose payloads live under
roles/<role>/templates/. - The directory MUST NOT host workflow scripts, test fixtures, or
build helpers. Those belong under
scripts/ortests/.
Layout 🗂️
Each compose service that needs static configuration owns a
sub-directory whose name matches the service. New service-specific
config MUST go into the matching sub-directory rather than at the
compose/ root.
For the rules that govern compose.yml itself (env-variable contract,
profile gating, resource caps), see
compose.yml.md.