2.9 KiB
Auto-Updater und Force-Updater
Anforderung
Der Installer soll auf den Nodes aktuell bleiben (Auto-Updater) und sich auf Kommando neu durchsetzen (Force-Updater) — ohne dass jemand per SSH auf jede Maschine geht.
Konzept
Versionierung
VERSION im Repo ist die einzige Quelle der Wahrheit (MAJOR.MINOR.PATCH).
Nach der Installation liegt sie lokal unter /etc/telegraf/CONFIG_VERSION
zusammen mit einem Hash der Installer-Logik (/etc/telegraf/INSTALLER_SHA).
Warum beides: VERSION sagt was sich geändert hat, der Hash erkennt auch
Änderungen an Scripts und Confs, bei denen die Version nicht erhöht wurde
(Fehlerkorrektur an journal-tail.sh etwa). Sonst bleibt ein Node mit falschem
Script stehen, weil die Version gleich geblieben ist.
Auto-Updater
systemd-Timer telegraf-installer-update.timer, Standard täglich
(--interval überschreibt: daily | hourly | weekly | *-interval).
Der Lauf ist bewusst billig: Er holt nur VERSION und SHA256SUMS (wenige
hundert Byte) und vergleicht. Erst bei Abweichung lädt er den Installer und die
Confs. Kein git clone, kein GitHub-Actions-Overhead.
Ablauf:
VERSIONvom Repo lesen, mit lokalem Wert vergleichen.- Bei Gleichstand und gleichem Hash: still beenden (Exit 0).
- Sonst
install.sh --quiet --update-onlyausführen. - Ergebnis nach
/var/log/telegraf-installer-update.logschreiben.
--update-only fasst nur telegraf.d/-Confs und Hilfsscripts an. Es installiert
kein Paket neu und rührt /etc/telegraf/telegraf.conf nicht an — dadurch
bleibt ein Update auch auf einem PVE-Knoten mit Drop-in harmlos.
Force-Updater
install.sh --force-update (Windows: -ForceUpdate):
- Confs und Scripts werden immer neu geschrieben, ohne Versionsvergleich.
systemctl restart telegrafwird erzwungen.- Danach Selbsttest: Dienst aktiv? Konfig-Test sauber? Erreichbarkeit des Collectors? Ergebnis als Klartext auf stdout, Exit-Code entsprechend.
Damit ist der Force-Weg das Werkzeug nach einem kaputten Update oder wenn eine Datei manuell verändert wurde. Er ist idempotent — mehrfaches Ausführen ist folgenlos.
Sicherheit
- Der Updater lädt ausschließlich vom eigenen Gitea (
REPO_RAW). - Kein Token im Repo: Der Bearer-Token liegt lokal in
/etc/default/telegraf.--update-onlyändert diese Datei nicht, ein Update kann den Zugang also nicht zerstören. - Konfig-Test vor dem Neustart:
telegraf --test --input-filter cpu:mem. Schlägt er fehl, wird die alte Conf zurückgerollt (.bak).
Windows
install.ps1 -InstallUpdateTask legt eine geplante Aufgabe
(\NetBirdTelegraf\Update) mit denselben Semantiken an: täglich, nur bei
Änderung, Ergebnis ins Event-Log. -ForceUpdate entspricht dem Linux-Weg.
Umsetzungsstand
| Teil | Status |
|---|---|
VERSION im Repo |
✅ |
--check / --version |
✅ |
--force-update |
✅ |
Timer + --install-update-timer |
✅ |
-ForceUpdate / Task (Windows) |
✅ |