Plugin für das Checkmk Cockpit, das die Client-Aktualisierung (Checkmk-Agent-Update auf entfernten Windows-Hosts per Remote-PowerShell) als Kontextmenü-Eintrag bereitstellt.
Ohne dieses Plugin gibt es im Cockpit ab v1.7.0 den Menüpunkt „Client aktualisieren…" nicht mehr — nur wer das Plugin installiert hat, sieht ihn.
- Neuestes ZIP von den Releases
herunterladen (
Checkmk-Plugin-AgentUpdater-x.y.z.zip). - Entpacken. Die enthaltene
CheckmkPlugin.AgentUpdater.dllin den Ordnerplugins/neben deinerCheckmk.App.exelegen. Ordner ggf. anlegen. - Cockpit starten. Im Log siehst du unter Info:
Plugin registriert: Client-Aktualisierung 1.0.0 (kroste.checkmk.agent-updater).
Der Menüpunkt „Client aktualisieren…" erscheint jetzt im Rechtsklick-Menü der Service-Grid, der Baumansicht und der Hosts-Liste.
Beim ersten Aufruf verwendet das Plugin Defaults:
- Agent-Share:
\\samba01\542$\5424_IT-Basis-Dienste\CheckMK— muss das aktuelle MSI enthalten. Das Plugin nimmt automatisch die zuletzt geänderte*.msiaus dem Ordner. - PowerShell-Skript-Vorlage: läuft auf dem Zielhost, macht Deinstall →
Install → Register. Enthält den Register-Befehl inkl.
--trust-certund Passwort (Klartext).
Beide Werte werden nach dem ersten Start unter
%APPDATA%\Kroste\Checkmk\plugins\kroste.checkmk.agent-updater\settings.json
abgelegt und können dort per Editor geändert werden. (Eine In-App-Settings-UI
gibt's noch nicht — kommt in einer späteren Version.)
- Rechtsklick auf einen Service oder Host → „Client aktualisieren…".
- Credential-Dialog: Admin-Anmeldedaten (
DOMAENE\Benutzer+ Passwort) für die Remote-Session. WinRM am Zielhost muss aktiv sein — in der DMZ typischerweise geblockt. - Fortschritts-Fenster: das Plugin öffnet eine PSSession zum Host, kopiert
den Installer per
Copy-Item -ToSession(umgeht Double-Hop), führt die Skript-Vorlage aus (Deinstall/Install/Register), meldet Zeile für Zeile die PowerShell-Ausgabe. - Erfolg wird am Exit-Code festgemacht, nicht an stderr — native Tools wie
msiexecodercmk-agent-ctlschreiben Infos manchmal nach stderr.
- Der Register-Befehl braucht
--trust-cert, sonst hängt sichcmk-agent-ctl registerin einer interaktiven Zertifikatsabfrage auf. Start-Process msiexec.exe -Waitmeldet Nicht-Null-ExitCodes nicht als Fehler. Die Default-Vorlage nutzt-PassThru+$proc.ExitCode-Prüfung.
- Admin-Passwort wird nur im Prozess-Memory gehalten, niemals ins Log geschrieben.
- Das temporäre
.ps1-Skript wird nach der Ausführung gelöscht. - Die Skript-Vorlage enthält im Register-Befehl das Agent-Register-Passwort im Klartext (typischer Automation-User) — das ist bewusst so, weil der User die Vorlage sowieso lokal editiert.
Das Plugin exportiert IAgentUpdater (aus Checkmk.PluginContracts.Services)
in den DI-Container. Andere Plugins können es via
context.Services.GetRequiredService<IAgentUpdater>() konsumieren — z. B. das
vSphere-Baseimage-Plugin, das das Update in einer Batch-Schleife über mehrere
Baseimage-VMs fährt.
- Windows (WinRM/PowerShell-Remoting ist Windows-only).
- Cockpit ≥ v1.7.0 (ab da ist das Plugin-System im Cockpit-Kern).
- WinRM am Zielhost aktiv (
winrm quickconfig). - Admin-Rechte auf dem Zielhost.
Checkmk-Plugin-AgentUpdater/
├── CheckmkPlugin.AgentUpdater/
│ ├── Contributions/ # IContextMenuContribution
│ ├── Services/ # AgentUpdaterService + PluginSettings
│ ├── UI/ # ChromeWindow + TitleBar (dupliziert aus Cockpit)
│ ├── Views/ # AgentUpdateWindow + CredentialDialog
│ ├── Plugin.cs # IPlugin-Entry-Point
│ └── CheckmkPlugin.AgentUpdater.csproj
├── deps/
│ └── Checkmk.PluginContracts.dll # committed, siehe deps/README.md
├── .github/workflows/ # CI + Release
├── Directory.Build.props
├── Directory.Packages.props
└── Checkmk-Plugin-AgentUpdater.slnx
5424 IT-Basis-Dienste (LHP)