mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-07 03:15:56 +00:00
Run 32118850138 lost the :53 listener, so the sampler counts listeners. Run 32538854067 lost DNS with the listener still bound: sockets-udp.txt showed dnsmasq holding 0.0.0.0:53 while every forwarded query timed out, and the sampler reported that hour as healthy. Each tick now also records what a glibc caller gets back — for the zone this resolver owns, derived from its own address= line, and for one name it must forward — with the latency that caller paid. The rescue collector probes the in-zone name too: probing external names alone cannot separate "forwarding is gone" from "dnsmasq is gone". The sampler now also runs on the swarm lab DNS nodes; it only ever ran in the compose path, which is why the Magento artifact carried no sampler log at all. Its location comes from group_vars FILE_DNS53_SAMPLER_LOG and is required at every call site, so a run cannot quietly collect nothing. 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.