diff --git a/docs/superpowers/specs/2026-03-27-boot-optimierung-design.md b/docs/superpowers/specs/2026-03-27-boot-optimierung-design.md new file mode 100644 index 0000000..8e253a7 --- /dev/null +++ b/docs/superpowers/specs/2026-03-27-boot-optimierung-design.md @@ -0,0 +1,40 @@ +# Boot-Optimierung: network-online entfernen + cloud-init deinstallieren + +**Datum:** 2026-03-27 + +## Problem + +Der Boot-Vorgang der Infoscreens ist unnötig langsam durch zwei Ursachen: + +1. `morz-agent.service` wartet auf `network-online.target` — blockiert systemd-Parallelstart bis das Netzwerk vollständig erreichbar ist (kann 10–30 s kosten) +2. cloud-init ist installiert und läuft bei jedem Boot durch — prüft Metadaten-Endpunkte, wartet auf Timeouts, obwohl keine Cloud-Infrastruktur genutzt wird + +## Lösung + +### 1. morz-agent.service — network target + +**Datei:** `ansible/roles/signage_player/templates/morz-agent.service.j2` + +- `After=network-online.target` → `After=network.target` +- `Wants=network-online.target` → entfernen + +Begründung: `Restart=on-failure` + `RestartSec=10` sind bereits gesetzt. Der Agent verbindet sich zum MQTT-Broker asynchron und hat eigene Reconnect-Logik. Eine Race Condition führt also nur zu einem kurzen Neustart, nicht zu einem dauerhaften Ausfall. + +### 2. cloud-init deinstallieren + +**Datei:** `ansible/roles/signage_base/tasks/main.yml` + +- `apt purge cloud-init` — entfernt Paket inkl. Konfiguration +- Verzeichnisse `/etc/cloud` und `/var/lib/cloud` entfernen +- Mit `failed_when: false` abgesichert für Maschinen wo cloud-init nie installiert war + +## Nicht geändert + +- `ExecStartPre=sleep 3` — existiert in der aktuellen Service-Datei nicht + +## Dateien + +| Datei | Änderung | +|---|---| +| `ansible/roles/signage_player/templates/morz-agent.service.j2` | network target | +| `ansible/roles/signage_base/tasks/main.yml` | cloud-init entfernen |