diff --git a/docs/superpowers/specs/2026-06-05-frappe-bench-infrastruktur-design.md b/docs/superpowers/specs/2026-06-05-frappe-bench-infrastruktur-design.md index 8cd612c..fc3e327 100644 --- a/docs/superpowers/specs/2026-06-05-frappe-bench-infrastruktur-design.md +++ b/docs/superpowers/specs/2026-06-05-frappe-bench-infrastruktur-design.md @@ -99,6 +99,27 @@ sites = { }; ``` +Secrets werden nicht als manuell gepflegte Datei unter `/var/lib/frappe` verwaltet, sondern wie bei den anderen Diensten über agenix bereitgestellt. Das Frappe-Modul referenziert dafür einen age-Secret-Pfad, z.B.: + +```nix +frappeEnvFile = config.age.secrets.frappe-env.path; +``` + +Die zugehörige Secret-Datei enthält die für Init und Site-Erzeugung benötigten Variablen, insbesondere: + +```text +FRAPPE_DB_ADMIN_PASSWORD= +FRAPPE_ADMIN_PASSWORD= +``` + +Der Secret-Eintrag wird in den bestehenden agenix-Strukturen ergänzt: + +```text +secrets/frappe-env.age +secrets.nix +hosts/AZ-CLD-1/secrets.nix +``` + Weitere Sites können später ergänzt werden, ohne die Grundstruktur umzubauen: ```nix @@ -140,7 +161,9 @@ Die Frontend-/Nginx-Instanz bleibt über Traefik erreichbar. Für `learn.az-grup Die Initialisierung bleibt idempotent: - Verzeichnisse werden vorbereitet. -- Fehlende Env-Datei oder fehlende Secrets führen zu einem klaren Fehler. +- Secrets werden ausschließlich über `config.age.secrets.*.path` eingebunden. +- Eine fehlende agenix-Secret-Definition oder fehlende Variablen im Secret führen zu einem klaren Fehler. +- Es wird keine dauerhafte, manuell gepflegte Secret-/Env-Datei unter `/var/lib/frappe` erzeugt. - Gemeinsame Bench-Konfiguration wird gesetzt. - Existiert `sites//site_config.json`, wird die Site-Erzeugung übersprungen. - Existiert die Site nicht, wird sie mit `bench new-site` angelegt. @@ -204,5 +227,7 @@ Zusätzliche statische Prüfungen: - `containers/frappe.nix` enthält keine Redis-Container mehr. - `containers/frappe.nix` definiert nicht mehr `services.mysql`. +- `containers/frappe.nix` verwendet agenix-Secrets über `config.age.secrets.*.path` statt eine manuelle `/var/lib/frappe/*.env`-Datei zu erwarten. - `services/default.nix` importiert `mariadb.nix` und `redis.nix`. - `containers/default.nix` importiert `frappe.nix` statt `frappe-lms.nix`. +- `secrets/frappe-env.age`, `secrets.nix` und `hosts/AZ-CLD-1/secrets.nix` sind konsistent ergänzt.