Files
proxdeploy/docs/issues/005-adapter-profile.md
florian.wildeandClaude Opus 5.5 01d22aac3a feat(engine): Adapter debian und Profil-Engine
Profile sind deklarative Schritte je Distributionsfamilie; der Adapter
übersetzt sie in ein idempotentes Shell-Skript. Ein neuer Adapter (rhel,
alpine) ist eine Datei und ein Eintrag in der Registry.

Variablen werden typisiert geprüft, in run-Schritten jeder Wert für die
Shell gequotet. SSH-Härtung läuft zuletzt, damit sich eine Provisionierung
per SSH nicht selbst aussperrt.

Geprüft mit shellcheck und echt in Containern (Debian 12/13, Ubuntu
22.04/24.04/26.04) inklusive zweitem Lauf. Dabei aufgefallen: frische
Images haben keine Paketlisten – der Vorspann macht jetzt apt-get update.

Closes #005

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:53:38 +02:00

2.0 KiB
Raw Permalink Blame History

#005 Adapter debian und Profil-Engine

Status: erledigt Meilenstein: v0.2.0 Labels: feature, engine Geschätzt: 6 h Tatsächlich: 0 h 20 min

Ziel

Interface FamilienAdapter, Umsetzung debian, Profile werden zu einem idempotenten Skript.

Aufgaben

  • Interface + Registry; debian-Adapter (apt mit Lock-Timeout, deb822, systemd, locale, keyboard, sshd_config.d, sudoers mit visudo-Prüfung)
  • Profilauflösung (requires transitiv, Zyklen, Variablen mit Typen und Standardwerten, Familien-Prüfung)
  • Platzhalter {{ var.x }}, {{ os.* }}, {{ guest.* }}, a ?? b; in run jeder Wert shell-gequotet
  • Profil base (Updates, Guest-Agent, Europe/Berlin, de_DE.UTF-8, Tastatur de, unattended-upgrades, chrony, SSH-Härtung, fail2ban optional)
  • Tests der erzeugten Skripte; shellcheck auf die Ausgabe aller Distributionen
  • pnpm test:container: Skripte wirklich ausführen (Debian 12/13, Ubuntu 22.04/24.04/26.04), Ergebnis prüfen, zweiter Lauf auf Idempotenz
  • docs/katalog.md: neue Distribution, neuer Adapter, eigenes Profil

Akzeptanzkriterien

  • Neues Profil/neuer Adapter braucht keine Änderung an Engine-Code
  • base + docker + zabbix-agent laufen auf allen fünf Distributionen durch und sind idempotent (Container, 2026-10-12)

Abhängigkeiten

#004

Notizen / Entscheidungen

  • Fund im Container: frische Images haben keine Paketlisten – der Vorspann macht jetzt immer apt-get update, sonst scheiterte schon die Benutzeranlage an „Unable to locate package sudo“.
  • Zeitzone, Locale und Tastatur werden gegen strenge Muster geprüft, bevor sie ins Skript kommen (shellcheck fand verschachteltes Quoting im sed-Ausdruck).
  • SSH-Härtung läuft immer zuletzt: läuft die Provisionierung per SSH als root (LXC ohne Node-SSH), schlösse sie sich sonst selbst aus.
  • Marken ::proxdeploy:: profil <id> im Skript zeigen im Live-Log, welches Profil gerade läuft.
  • Dateiinhalte gehen base64-kodiert ins Skript – beliebige Zeichen kommen unverändert an.