feat(updater): --check/--version, --force-update mit Rollback, --update-only, systemd-Timer + Windows-Task; VERSION+SHA-Marker; envsubst-Fallback
This commit is contained in:
1 parent
0e9dce9e47
commit
8d05d3bc48
3 files changed
+464
-6
No files matched your search
@@ -5,6 +5,79 @@ Der Ausgang läuft über den **NetBird-Reverse-Proxy** (`imac-prometheus.x05.idx
|
||||
mit **Bearer-Token** — dadurch funktioniert der Installer auch auf Maschinen, die **kein NetBird-Peer** sind
|
||||
(Büro-LAN, Kundenlaptop, CGNAT, VM ohne Client).
|
||||
|
||||
## Auto-Updater und Force-Updater
|
||||
|
||||
Der Installer hält sich auf den Nodes selbst aktuell.
|
||||
|
||||
### Prüfen
|
||||
|
||||
```sh
|
||||
sh install.sh --version # installierte + verfügbare Version
|
||||
sh install.sh --check # Exit 0 = aktuell, Exit 10 = Update verfügbar
|
||||
```
|
||||
|
||||
Beides braucht **keinen Token** und **kein root** — gut für Monitoring-Checks.
|
||||
|
||||
### Auto-Updater (systemd-Timer)
|
||||
|
||||
```sh
|
||||
sh install.sh --name <node> --token <T> --install-update-timer daily
|
||||
sh install.sh --name <node> --token <T> --install-update-timer 30min
|
||||
sh install.sh --name <node> --token <T> --install-update-timer weekly
|
||||
```
|
||||
|
||||
Legt `telegraf-installer-update.timer` an (Default `daily` 04:30, ±15 min Streuung).
|
||||
Der Lauf ist billig: Es werden nur `VERSION` und der SHA des Installers verglichen.
|
||||
Erst bei Abweichung lädt er den Installer und ruft sich mit `--update-only` auf.
|
||||
Log: `/var/log/telegraf-installer-update.log`.
|
||||
|
||||
`--update-only` fasst **nur** `telegraf.d/`-Konfs und Hilfsscripts an: kein
|
||||
Paket-Update, `/etc/default/telegraf` (und damit der Token) bleibt unberührt,
|
||||
kein Neustart wenn sich nichts geändert hat.
|
||||
|
||||
Warum Version **und** Hash: Die `VERSION` erkennt neue Auslieferungen, der SHA
|
||||
auch Korrekturen ohne Versionssprung (z. B. ein Fix an `journal-tail.sh`).
|
||||
Ohne den Hash bliebe eine Node mit fehlerhaftem Script stehen.
|
||||
|
||||
### Force-Updater
|
||||
|
||||
```sh
|
||||
sh install.sh --force-update --name <node> --token <T>
|
||||
```
|
||||
|
||||
Schreibt Konfs und Scripts **immer** neu, sichert sie vorher nach
|
||||
`/var/backups/telegraf-<zeitstempel>/` und startet den Dienst neu. Schlägt der
|
||||
Konfig-Test fehl, wird automatisch zurückgerollt. Idempotent — mehrfaches
|
||||
Ausführen ist folgenlos. Das Werkzeug nach einem kaputten Update oder wenn
|
||||
jemand Dateien von Hand verändert hat.
|
||||
|
||||
Entfernen: `sh install.sh --remove-update-timer`
|
||||
|
||||
### Windows
|
||||
|
||||
```powershell
|
||||
.\install.ps1 -Name <node> -Token <T> -Check # Versionsvergleich
|
||||
.\install.ps1 -Name <node> -Token <T> -InstallUpdateTask # taeglich
|
||||
.\install.ps1 -Name <node> -Token <T> -InstallUpdateTask -UpdateInterval hourly
|
||||
.\install.ps1 -Name <node> -Token <T> -ForceUpdate
|
||||
.\install.ps1 -RemoveUpdateTask
|
||||
```
|
||||
|
||||
Die Aufgabe `\NetBirdTelegraf\Update` läuft mit denselben Semantiken
|
||||
(Version + Hash, nur bei Änderung). Log:
|
||||
`%ProgramData%\netbird-telegraf\update.log`.
|
||||
|
||||
### Marker auf der Node
|
||||
|
||||
| Datei | Inhalt |
|
||||
|---|---|
|
||||
| `/etc/telegraf/CONFIG_VERSION` | zuletzt installierte Repo-Version |
|
||||
| `/etc/telegraf/INSTALLER_SHA` | SHA256 des Installers zum Installationszeitpunkt |
|
||||
| `/etc/telegraf/REPO_RAW` | genutzte Repo-Quelle (GitHub-Mirror, Testserver) |
|
||||
|
||||
`REPO_RAW` ist per Umgebungsvariable überschreibbar — nützlich für Tests,
|
||||
Mirrors oder einen eigenen Fork.
|
||||
|
||||
### Docker-Nodes (kein journalctl im Image)
|
||||
|
||||
Läuft Telegraf als **Container** (offizielles `telegraf`-Image), ist der Journal-Weg nicht möglich: das Image ist Debian ohne `systemd` und hat **kein `journalctl`**; `/hostfs` ist zudem read-only. Dafür gibt es `scripts/syslog-tail.sh` — es liest die **Syslog-Dateien des Hosts** unter `/hostfs/var/log/`.
|
||||
|
||||
Reference in new issue
Block a user