Files

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:

  1. VERSION vom Repo lesen, mit lokalem Wert vergleichen.
  2. Bei Gleichstand und gleichem Hash: still beenden (Exit 0).
  3. Sonst install.sh --quiet --update-only ausführen.
  4. Ergebnis nach /var/log/telegraf-installer-update.log schreiben.

--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 telegraf wird 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) ✅