Installation automatisiert
Helper Scripts für wiederkehrende furt-Installationen
Getestet unter
- OpenBSD 7.7
- Debian 12
- Arch Linux
Automatisierung verstehen
Nach mehreren manuellen furt-Installationen entstand ein Set von Helper Scripts die den Installationsprozess automatisieren. Diese Scripts kapseln die manuellen Schritte aus der Standard-Installation und machen sie wiederholbar. Jedes Script übernimmt einen spezifischen Teil der Installation und kann bei Bedarf auch einzeln ausgeführt werden.
Der zentrale Orchestrator install.sh ruft sechs spezialisierte Scripts in der korrekten Reihenfolge auf. Diese modulare Struktur ermöglicht es Teile der Installation zu überspringen oder nur bestimmte Komponenten zu aktualisieren.
Voraussetzungen prüfen
Die Helper Scripts setzen voraus dass Lua 5.1 und die benötigten Module bereits installiert sind. Diese Abhängigkeiten können die Scripts nicht automatisch installieren da jede Distribution andere Paketnamen verwendet:
# OpenBSD
doas pkg_add lua lua-socket lua-cjson luasec
# Debian
sudo apt install lua5.1 lua-socket lua-cjson lua-sec
# Arch Linux
sudo pacman -S lua51 lua51-socket lua51-dkjson lua51-sec
Die Scripts prüfen während der Installation ob alle Module verfügbar sind und geben entsprechende Fehlermeldungen aus.
Source-Code beschaffen
Für die automatisierte Installation benötigst du das komplette furt-Package inklusive aller Helper Scripts:
curl -OJ https://smida.dragons-at-work.de/api/packages/DAW/generic/furt-api-gateway/0.1.4/furt-api-gateway-v0.1.4.tar.gz
tar -xzf furt-api-gateway-v0.1.4.tar.gz
cd furt-api-gateway-v0.1.4
Das Package enthält die komplette scripts/-Verzeichnisstruktur mit allen Helper Scripts und den plattformspezifischen Service-Templates im deployment/-Verzeichnis.
Fresh Installation
Für eine neue furt-Installation führst du einfach das Orchestrator-Script aus:
# OpenBSD
doas ./install.sh
# Linux
sudo ./install.sh
Das Script durchläuft sechs Phasen und gibt für jeden Schritt eine Statusmeldung aus:
Phase 1 - System-Benutzer erstellen: Das setup-user.sh Script erkennt automatisch das Betriebssystem und erstellt den entsprechenden System-Benutzer. Unter OpenBSD wird _furt angelegt, unter Linux furt mit dem --system Flag.
Phase 2 - Verzeichnisse einrichten: Das setup-directories.sh Script erstellt die komplette Verzeichnisstruktur mit korrekten Berechtigungen. Es erkennt automatisch ob Config-Dateien nach /usr/local/etc/furt/ (BSD) oder /etc/furt/ (Linux) gehören.
Phase 3 - Source-Code synchronisieren: Das sync-files.sh Script kopiert alle Source-Verzeichnisse nach /usr/local/share/furt/ und setzt die korrekten Berechtigungen. Version-Dateien für die merkwerk-Integration werden automatisch mit kopiert falls vorhanden.
Phase 4 - Service integrieren: Das create-service.sh Script installiert die passenden Service-Templates aus dem deployment/-Verzeichnis. Unter OpenBSD wird das rc.d-Script nach /etc/rc.d/furt kopiert und mit rcctl enable aktiviert. Unter Linux wird die systemd-Unit installiert und mit systemctl enable aktiviert.
Phase 5 - Konfiguration validieren: Das validate-config.sh Script prüft ob eine gültige Konfigurationsdatei vorhanden ist. Da noch keine produktive Konfiguration existiert, gibt es eine Warnung aus dass die Beispiel-Konfiguration noch angepasst werden muss.
Phase 6 - Health Check: Das health-check.sh Script versucht den Service zu erreichen. Bei einer Fresh Installation schlägt dies erwartungsgemäß fehl da der Service noch nicht gestartet wurde.
Nach erfolgreicher Installation zeigt das Script eine Zusammenfassung mit den nächsten Schritten:
=== Installation Summary ===
furt installation completed successfully
Next steps:
1. Edit configuration file: /usr/local/etc/furt/furt.conf
2. Start the service: doas rcctl start furt
3. Test the API: curl http://127.0.0.1:7811/health
Konfiguration anpassen
Die Helper Scripts kopieren automatisch das Beispiel-Config-File, du musst es aber noch an deine Umgebung anpassen:
# OpenBSD
doas $EDITOR /usr/local/etc/furt/furt.conf
# Linux
sudo $EDITOR /etc/furt/furt.conf
Die wichtigsten Anpassungen sind SMTP-Zugangsdaten und API-Keys. Das Config-Format ist identisch zur manuellen Installation.
Service starten
Nach der Konfiguration startest du furt mit den Standard-System-Tools:
# OpenBSD
doas rcctl start furt
doas rcctl check furt
# Linux
sudo systemctl start furt
sudo systemctl status furt
Die Helper Scripts haben den Service bereits für automatischen Start beim Booten konfiguriert.
Upgrade-Installation
Für Updates existierender furt-Installationen nutzt du den Upgrade-Modus. Dieser überspringt die Benutzer- und Service-Erstellung und aktualisiert nur den Source-Code:
# Neues Package herunterladen
curl -OJ https://smida.dragons-at-work.de/api/packages/DAW/generic/furt-api-gateway/0.1.4/furt-api-gateway-v0.1.4.tar.gz
tar -xzf furt-api-gateway-v0.1.4.tar.gz
cd furt-api-gateway-v0.1.4
# Upgrade durchführen
doas ./install.sh --upgrade # OpenBSD
sudo ./install.sh --upgrade # Linux
Der Upgrade-Modus führt nur drei Schritte aus:
Verzeichnisse prüfen: Stellt sicher dass die Ziel-Verzeichnisse existieren, erstellt aber keine neuen Benutzer oder Services.
Source-Code aktualisieren: Überschreibt den kompletten Inhalt von /usr/local/share/furt/ mit der neuen Version. Die Konfiguration in /usr/local/etc/furt/ oder /etc/furt/ bleibt unverändert.
Validation: Prüft dass die neue Version korrekt installiert wurde und die bestehende Konfiguration noch gültig ist.
Nach einem Upgrade zeigt das Script die neue Versionsnummer und erinnert daran den Service neu zu starten:
=== Installation Summary ===
furt upgrade completed successfully
Source code updated to:
Version: 0.1.4+abc123
Service restart required:
doas rcctl restart furt
Git-basierte Updates
Wenn du furt aus dem Git-Repository installiert hast, kannst du Updates direkt über Git beziehen:
cd /pfad/zu/furt-source
git pull
doas ./install.sh --upgrade
doas rcctl restart furt # OpenBSD
sudo systemctl restart furt # Linux
Diese Methode ist besonders für Entwicklungsumgebungen geeignet wo du die neuesten Änderungen testen möchtest.
Einzelne Scripts ausführen
Jedes Helper Script kann auch einzeln ausgeführt werden. Dies ist nützlich für Debugging oder wenn du nur bestimmte Teile der Installation aktualisieren möchtest:
# Nur Source-Code aktualisieren
sudo ./scripts/sync-files.sh
# Nur Konfiguration validieren
sudo ./scripts/validate-config.sh
# Nur Health Check
./scripts/health-check.sh
Die Scripts prüfen ihre Voraussetzungen und geben entsprechende Fehlermeldungen aus wenn Abhängigkeiten fehlen.
Installationsfehler diagnostizieren
Bei Problemen während der automatisierten Installation hilft die modulare Struktur bei der Fehlersuche. Jedes Script gibt detaillierte Statusmeldungen aus und bricht bei Fehlern ab.
Häufige Probleme sind fehlende Berechtigungen, bereits existierende Benutzer oder unvollständige Package-Downloads. Die Scripts geben spezifische Fehlermeldungen aus die auf das Problem hinweisen.
Bei komplexeren Problemen kannst du zur manuellen Installation zurückkehren um jeden Schritt einzeln zu kontrollieren und zu verstehen wo der Fehler auftritt.
Die automatisierte Installation beschleunigt wiederkehrende furt-Deployments erheblich und reduziert die Wahrscheinlichkeit von Tippfehlern bei der manuellen Installation.