Aktionen

Zabbix Agent per Gruppenrichtlinie installieren lassen

Aus znilwiki

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Bei einem Kunden waren es zu viele Server als das bei diesen der Zabbix-Agent bei allen von Hand installiert werden konnte.
Es gab zwar eine Softwareverteilung - welche für die Server jedoch nicht genutzt werden durfte.

Zunächst dachte ich an ein Script - jedoch stand nur ein Benutzerdefinierter Administrationsaccount zur Verfügung und die UAC-Kontrolle auf vielen Servern war noch aktiviert. Eine Remote-Installation z.B. per WMI wäre daran gescheitert.
Das Problem hatte ich schon als ich mir den Updater für den Zabbix-Agenten ausgedacht hatte: Zabbix Agent Auto Updater - dort habe ich das Problem umgangen indem ich einfach den SYSTEM-Benutzer genommen habe - dieser hat volle Rechte und keine UAC-Abfrage. Gestartet wird das Update über die Windows Aufgabenplanung.

Also die Installation in die Aufgabenplanung eintragen lassen ...
Naheliegend war die Idee dies per Gruppenrichtlinie zu tun - und das hat auch auf Anhieb geklappt!


Voraussetzungen

  • Ihr habt eine zentrale Freigabe auf der das Installationsskript abgelegt ist - siehe
  • Und Ihr habt das Installationsskript vorher getestet - an ein paar Rechnern von Hand
  • Eure Server sind auch unterhalb von OU's (Organisationseinheiten) organisiert




Einrichtung eines Task als "Sofortige Aufgabe" (ab W7 / 2008 R2)

Warning.png
Warnung: Dieser geplante Task wird bei dieser Methode jedes mal ausgeführt wenn der Computer die Computerkonfiguration der Gruppenrichtlinie übernimmt! Also alle 90 Minuten +/- 30 Minuten!!!
Diese Methode ist also prima für die Erst-Verteilung des Agenten - und danach sollte die Gruppenrichtlinie wieder deaktiviert oder die Verknüpfung gelöscht werden.
Die regelmäßige Neuinstallation ist bei der Verwendung meines Installationsskriptes zwar völlig Problemlos - aber auch völlig unnötig.


Important.png
Hinweis: In der Praxis mache ich es dennoch genau so. Statt der InstallZabbixAgent.bat nutze ich jedoch eine weitere Batchdatei InstallZabbixAgentGPO.bat -> Diese prüft ob der Agent schon installiert st und beendet sich in diesem Fall sofort wieder. Fehlt der Agent wird die eigentliche Installation aufgerufen.



Wir erstellen im Gruppenrichtlinien-Editor auf der gewünschten OU eine neue Gruppenrichtlinie, z.B. "Zabbix Agent installieren" und bearbeiten diese.
Dann navigieren wir zu:

Computerkonfiguration
--> Einstellungen
    --> Systemsteuerungseinstellungen
        --> Geplante Aufgaben

ZabbixAgent via GPO 002.png
Wir klicken mit der rechten Maustaste auf "Geplante Aufgaben" oder rechts in den leeren Bereich und wählen

Sofortige Aufgabe (mindestens Windows 7)



Es öffnet sich ein neues Fenster in der wir die Details eingeben können:
ZabbixAgent via GPO 003.png Bei "Benutzer oder Gruppe ändern..." klickt ihr drauf und gebt im Nachfolgenden Fenster "SYSTEM" ein. Falls er mehrere Benutzer oder Gruppen vorschlägt wählt den reinen SYSTEM Benutzer aus.
Setzt die Haken wie angegeben und vergesst den Namen nicht.
Auf dem Tab "Aktionen" fügen wir nun noch den Aufruf unseres Installationsskriptes hinzu:
ZabbixAgent via GPO 004.png

Klickt auf OK und schließt die Gruppenrichtlinie.



Installation prüfen

Geht auf einen Server auf dem der Agent noch nicht installiert ist und aktualisiert dort die Gruppenrichtlinie mit

gpupdate /force

unmittelbar nach dem Befehl wird die Installation beginnen (allerdings im Hintergrund ohne das Ihr etwas seht.
Während dessen gibt es in der Aufgabenplanung auch eine Aufgabe "Zabbix Agent installieren" - die aber nach erfolgreichen Abschluss sich selbst wieder löscht.


Ohne das manuelle Aktualisieren der Gruppenrichtlinien müsst Ihr den natürlichen Intervall abwarten - die Server prüfen Regelmäßig ob sich etwas geändert hat und übernehmen dann Änderungen.

Per Default ist der Wert für die Computerkonfiguration 90 Minuten +/- einem 30 Minuten Zeitfenster (siehe https://technet.microsoft.com/en-us/library/cc940895.aspx )
Es kann also bis zu 2h Stunden dauern bis der letzte Server dies übernommen hat.


Installationsskript nur einmal ausführen per GPO

Wenn Ihr zusätzlich bei der Erstellung der Aufgabe folgenden Haken setzt so wird das Skript nur ein einziges mal ausgeführt:
ZabbixAgent via GPO 005.png



Nur auf Servern ausführen per WMI-Filter

Der Filter ist:

Select * from Win32_OperatingSystem where Caption like "%Server%"


Anleitung für die Anwendung: http://www.windowspro.de/wolfgang-sommergut/gruppenrichtlinien-mit-wmi-filter-auf-bestimmte-pcs-oder-user-beschraenken


Installationsskript nur bei Bedarf ausführen per Skript

Wie ich oben beschrieben habe wird das Skript nun bei jeder Aktualisierung der Computerkonfiguration der Gruppenrichtlinie ausgeführt.
Es ist natürlich völlig unnötig den Agenten alle ca. 90 Minuten neu zu installieren.
Andererseits hat die Gruppenrichtlinie den Charme das neue Server etc. automatisch mit dem Agenten versorgt werden. Im Zusammenspiel mit einer entsprechenden Autoregistrierung auf dem Zabbix Server entgeht uns so kein Server.
Auch bei zum Beispiel bei provisionierten Citrix-Terminalservern ist dies eine gute Lösung - wenn man den Agent auf das Template packt melden sich nämlich alle Server unter dem gleichen Namen da man in der Agenten-Konfigurationsdatei keine Umgebungsvariablen verwenden kann.

Bleibt das Problem des ständigen Neuinstallierens.

Das habe ich nun wie folgt abgeschwächt: Ich lasse das Installationsskript nicht direkt starten sondern starte statt dessen die separate Datei

InstallZabbixAgentGPO.bat

die ich im gleichen Verzeichnis wie die normale InstallZabbixAgent.bat ablege.
Inhalt der Datei:

@echo off
If exist "%PROGRAMFILES%\Zabbix\zabbix_agentd.win.conf" (
	Echo Agent ist installiert
) else (
	Echo Agent ist NICHT installiert, starte Setup
	\\10.112.5.88\ZabbixAgent\Agent\InstallZabbixAgent.bat
)
exit 0

Alternativ kann man prüfen ob es einen passenden Dienst gibt:

@echo off
REM Make a test if Zabbix-Agent is already installed
sc query "Zabbix Agent" >nul 2>&1
If NOT ERRORLEVEL 1 (
    Echo Zabbix-Agent already installed - Install Agent DENIED - Exit Script
	GoTo END
        REM an Ende springen und Skript verlassen
) Else (
    Echo Missing Zabbix-Agent Configuration-File - Install Agent ALLOWED
    Set GPO_INSTALL_AGENT=TRUE
    REM Installieren des Agenten
)

:END


Ich prüfe ob es schon eine Zabbix-Installation gibt (am vorhanden sein einer entsprechenden Konfigurationsdatei) und starte nur im Fehlerfall das Setup.

Face-wink.png
Tipp: Natürlich könnte man hier auch noch eine Unterscheidung einbauen - die GPO gilt zum Beispiel für alle Computer in der Domäne und im Skript filtere ich die Workstations heraus bzw. erlaube nur die Installation auf Servern ... oder arbeite hier dann mit Black- oder Whitelist





Windows XP / 2003

Funktioniert im Prinzip genauso wie zuvor - aber:

Ansonsten bei der Erstellung einfach die XP-Option wählen:
ZabbixAgent via GPO 006.png

ZabbixAgent via GPO 007.png
Da er mir in der Auswahl als Standard nur .exe Dateien anbietet habe ich dem Skript (.BAT) die CMD.EXE voran gestellt.
Ausführen:

C:\Windows\System32\CMD.exe

oder

%ComSpec%


Argumente:

/C \\Server\Freigabe\Script.bat




Kommentare

Loading comments...