Follow-up bugfix to #114. The edge-alloy.service unit pointed ExecStart at /usr/bin/alloy, but the Arch grafana-alloy package installs the binary as /usr/bin/grafana-alloy — the service crash-looped with status=203/EXEC.
Makes the path a variable (edge_alloy_bin, default /usr/bin/grafana-alloy) and uses it in the unit template.
Verified live on edge-1 before/after: the binary runs (v1.13.2), the alloy user exists (in systemd-journal), and the deployed /etc/alloy/edge.alloy config parses cleanly (grafana-alloy fmt) — so this one path was the only fault. Everything else from #114 (journald volatile, docker journald driver, noatime, trim + wear timers) is already correctly applied and confirmed on the host.
After merge I'll re-run install-edge-host.yml; only the alloy unit changes, so it just restarts edge-alloy (no container bounce) and log delivery to Loki goes live.
Follow-up bugfix to #114. The `edge-alloy.service` unit pointed `ExecStart` at `/usr/bin/alloy`, but the Arch `grafana-alloy` package installs the binary as **`/usr/bin/grafana-alloy`** — the service crash-looped with `status=203/EXEC`.
Makes the path a variable (`edge_alloy_bin`, default `/usr/bin/grafana-alloy`) and uses it in the unit template.
**Verified live on edge-1** before/after: the binary runs (v1.13.2), the `alloy` user exists (in `systemd-journal`), and the deployed `/etc/alloy/edge.alloy` config parses cleanly (`grafana-alloy fmt`) — so this one path was the only fault. Everything else from #114 (journald volatile, docker journald driver, noatime, trim + wear timers) is already correctly applied and confirmed on the host.
After merge I'll re-run `install-edge-host.yml`; only the alloy unit changes, so it just restarts edge-alloy (no container bounce) and log delivery to Loki goes live.
PR #114 pointed the edge-alloy.service unit at /usr/bin/alloy, but the Arch
`grafana-alloy` package installs the binary as /usr/bin/grafana-alloy. The
unit crash-looped with status=203/EXEC ("Unable to locate executable
/usr/bin/alloy"). Make the path a variable (edge_alloy_bin) and default it to
the real path. Verified on edge-1: the binary runs (v1.13.2), the alloy user
exists (in systemd-journal), and the deployed config parses cleanly — only
the ExecStart path was wrong.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Follow-up bugfix to #114. The
edge-alloy.serviceunit pointedExecStartat/usr/bin/alloy, but the Archgrafana-alloypackage installs the binary as/usr/bin/grafana-alloy— the service crash-looped withstatus=203/EXEC.Makes the path a variable (
edge_alloy_bin, default/usr/bin/grafana-alloy) and uses it in the unit template.Verified live on edge-1 before/after: the binary runs (v1.13.2), the
alloyuser exists (insystemd-journal), and the deployed/etc/alloy/edge.alloyconfig parses cleanly (grafana-alloy fmt) — so this one path was the only fault. Everything else from #114 (journald volatile, docker journald driver, noatime, trim + wear timers) is already correctly applied and confirmed on the host.After merge I'll re-run
install-edge-host.yml; only the alloy unit changes, so it just restarts edge-alloy (no container bounce) and log delivery to Loki goes live.