test(observability): pin the root alloy shape

The seams encoded alloy-as-rootless (default.target, dankclaw_default,
loki:3100 by name, 0.0.0.0+PublishPort UI, After=loki.service). Update
them to the root/system/host shape and add a test pinning the
load-bearing properties: Network=host, the /etc/machine-id mount, the
journal mounts, loopback UI, and the system-install + root-mirror
deploy path.
This commit is contained in:
Frank committed 2026-10-20 19:50:15 -07:00
1 parent 634fef242b
commit 9809ed9c74
2 files changed
+43 -16

No files matched your search

+6 -8
View File
@@ -240,14 +240,12 @@ CADDYFILE="$REPO_ROOT/dankclaw/Caddyfile"
}
@test "alloy's UI address comes from the unit, not the config file" {
# alloy 1.x refuses to configure the ui service from a config block
# ("service ui does not support being configured"), so the unit moves the
# UI off the container's loopback with a command-line flag. Without that
# flag the port cannot be published and the service has no reachable
# health endpoint at all — which is why the homepage status card for
# alloy read "down" while it ran under compose.
# alloy 1.x refuses to configure the ui service from a config block, so the
# unit sets the UI address on the command line. As a Network=host root unit
# that address is the host loopback directly (no PublishPort) — reachable
# from the host, from nothing off-host.
! grep -qE '^(ui|server) \{' "$REPO_ROOT/shared/alloy/config.alloy"
local unit="$REPO_ROOT/dankclaw/observability/quadlet/alloy.container"
grep -q -- '--server.http.listen-addr=0.0.0.0:12345' "$unit"
grep -q '^PublishPort=127.0.0.1:12345:12345$' "$unit"
grep -q -- '--server.http.listen-addr=127.0.0.1:12345' "$unit"
! grep -q '^PublishPort=' "$unit"
}