Quadlet statt eigener Service-Unit, zwei Umgebungsdateien

Prod fuehrt Phase 1 als Quadlet unter
~/.config/containers/systemd/wurzelwerk-ingest.container; Phase 2 legt
sich daneben. Damit faellt die eigene .service-Unit weg - zwei Wege,
dasselbe zu tun, sind einer zuviel.

Drei Dinge, die dabei nicht offensichtlich sind:

  Type=oneshot          Quadlet setzt sonst Type=notify, und die Unit
                        gaelte als gestartet, sobald der Container
                        laeuft, nicht wenn er durch ist.
  kein RemainAfterExit  Das Handbuch empfiehlt es fuer oneshot, aber bei
                        Timer-Aktivierung bliebe der Auftrag im Zustand
                        "started" und der Timer loeste ihn nie wieder
                        aus.
  --env-file            EnvironmentFile= im Abschnitt [Container] ist
                        nicht systemds EnvironmentFile=. Quadlet reicht
                        die Datei an podman weiter, und podman entfernt
                        keine Anfuehrungszeichen um Werte.

Network=bebop-net steht jetzt direkt in der Unit; P2_NETZ entfaellt.
Type=oneshot schaltet ausserdem die Startzeitgrenze ab, womit der Grund
fuer TimeoutStartSec=1800 wegfaellt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NupWEBPzsyohVPG47HsTz8
This commit is contained in:
irrlicht
2026-09-08 16:37:43 +02:00
co-authored by Claude Opus 5
parent c18e94e61e
commit 62e1923a72
5 changed files with 86 additions and 59 deletions
+5 -6
View File
@@ -1,16 +1,15 @@
# Nach ~/.config/wurzelwerk/p2.env kopieren und ausfuellen. chmod 600.
# Enthaelt Zugangsdaten und gehoert nicht ins Repo.
# Das Podman-Netz, in dem der Lauf haengt. Auf Prod bebop-net: dort loest
# Podmans DNS den Rechnernamen "postgres" auf, den DATABASE_URL benutzt.
# Ohne eigenes Netz ist pasta richtig, dann aber muss in DATABASE_URL
# host.containers.internal stehen.
P2_NETZ=bebop-net
# Das Netz steht in der Quadlet-Unit (Network=bebop-net), nicht hier.
#
# Die Datenbankverbindung steht auf Prod bereits in
# ~/.config/wurzelwerk/database.env; die Unit liest beide Dateien. Hier nur
# setzen, wenn Phase 2 eine andere braucht.
#
# Anfuehrungszeichen um den Wert weglassen: podman --env-file entfernt sie
# nicht, anders als systemd.
#
# DATABASE_URL=postgresql://wurzelwerk:PASSWORT@postgres:5432/wurzelwerk
# Threadzahl. Geht in die coder_version ein - eine Aenderung erzeugt einen