Ansible – Zabbix Agent Installation unter Windows

Die Verwaltung von IT-Infrastrukturen kann komplex und zeitaufwendig sein, insbesondere wenn es um die Verteilung und Installation von Überwachungsagenten auf einer großen Anzahl von Servern geht. Stell dir vor, wie praktisch es wäre, den Zabbix-Agenten auf tausenden von Servern mit nur einem einzigen Skript verteilen zu können. Mit Ansible, einem mächtigen Tool für die Automatisierung von IT-Aufgaben, ist dies problemlos möglich.

Viele Unternehmen verfügen über Lösungen zur Softwareverteilung auf Client-Geräten, aber oft fehlt eine kostengünstige und effiziente Methode zur Verwaltung von Servern. Ansible bietet hier eine ideale Lösung, da es sich für die automatisierte Konfiguration, Bereitstellung und Verwaltung von Systemen eignet – und das plattformübergreifend. Im Folgenden wird erläutert, wie Sie mit einem Ansible-Playbook den Zabbix-Agenten auf Windows-Servern installieren können.

Warum Ansible?

Ansible ist ein Open-Source-Tool, das für die Orchestrierung und Automatisierung von IT-Prozessen entwickelt wurde. Es verwendet keine Agenten, ist einfach zu bedienen und ermöglicht die Verwaltung von Remote-Systemen über SSH (Linux/Unix) oder Windows Remote Management (WinRM) für Windows-Geräte. Durch die Verwendung von Ansible können Sie Aufgaben automatisieren, die sonst manuell und fehleranfällig wären.

Das Ansible-Skript

- name: Install Zabbix Agent on Windows
  hosts: ansible_test
  vars:
    zabbix_agent_name: "Zabbix Agent"
    zabbix_agent_config_path: 'C:\\Program Files\\Zabbix Agent\\zabbix_agentd.conf'
    zabbix_agent_download_url: "https://cdn.zabbix.com/zabbix/binaries/stable/7.0/7.0.0/zabbix_agent-7.0.0-windows-amd64-openssl.msi"
    zabbix_agent_temp_path: 'C:\\Temp\\zabbix_agent.msi'
    zabbix_agent_temp_folder: 'C:\\Temp'
    zabbix_agent_install_folder: 'C:\\Program Files\\Zabbix Agent'
    zabbix_agent_log_path: 'C:\\Temp\\zabbix_agent_install_log.txt'
    zabbix_server_ip: "10.11.2.15"

  tasks:
    - name: Ensure Temp directory exists
      win_file:
        path: "{{ zabbix_agent_temp_folder }}"
        state: directory

    - name: Check if Zabbix Agent is installed
      win_shell: |
        Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "*{{ zabbix_agent_name }}*" }
      register: zabbix_check

    - name: Set fact if Zabbix Agent is installed
      set_fact:
        zabbix_installed: "{{ zabbix_check.stdout_lines | length > 0 }}"

    - name: Uninstall existing Zabbix Agent if installed
      win_shell: |
        $zabbix = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "*{{ zabbix_agent_name }}*" }
        if ($zabbix) {
          $zabbix.Uninstall()
        }
      when: zabbix_installed

    - name: Remove old Zabbix configuration file if it exists
      win_file:
        path: "{{ zabbix_agent_config_path }}"
        state: absent
      when: zabbix_installed

    - name: Download Zabbix Agent MSI
      win_get_url:
        url: "{{ zabbix_agent_download_url }}"
        dest: "{{ zabbix_agent_temp_path }}"

    - name: Create installation log directory
      win_file:
        path: "{{ zabbix_agent_install_folder }}"
        state: directory

    - name: Install Zabbix Agent
      win_package:
        path: "{{ zabbix_agent_temp_path }}"
        arguments: /qn SERVER={{ zabbix_server_ip }} HOSTNAME={{ ansible_hostname }} INSTALLFOLDER="{{ zabbix_agent_install_folder }}"
        log_path: "{{ zabbix_agent_log_path }}"

    - name: Start Zabbix Agent service
      win_service:
        name: "{{ zabbix_agent_name }}"
        start_mode: auto
        state: started

Funktionsweise des Skripts

Wichtige Variablen und ihre Funktionen:

  • zabbix_agent_name: Name des Zabbix Agenten ("Zabbix Agent").
  • zabbix_agent_config_path: Pfad zur Konfigurationsdatei des Agenten ('C:\\Program Files\\Zabbix Agent\\zabbix_agentd.conf').
  • zabbix_agent_download_url: URL zum Herunterladen des Zabbix Agent MSI-Pakets ("https://cdn.zabbix.com/zabbix/binaries/stable/7.0/7.0.0/zabbix_agent-7.0.0-windows-amd64-openssl.msi").
  • zabbix_agent_temp_path: Temporärer Pfad für das heruntergeladene MSI-Paket ('C:\\Temp\\zabbix_agent.msi').
  • zabbix_agent_temp_folder: Temporäres Verzeichnis ('C:\\Temp').
  • zabbix_agent_install_folder: Installationsverzeichnis des Agenten ('C:\\Program Files\\Zabbix Agent').
  • zabbix_agent_log_path: Pfad für das Installationsprotokoll ('C:\\Temp\\zabbix_agent_install_log.txt').
  • zabbix_server_ip: IP-Adresse des Zabbix Servers ("10.11.2.15").

Wichtige Aufgaben:

  1. Temp-Verzeichnis sicherstellen: Erstellen des temporären Verzeichnisses, falls es nicht existiert.
  2. Zabbix-Installation prüfen: Überprüfen, ob der Zabbix Agent bereits installiert ist.
  3. Deinstallation des bestehenden Zabbix Agenten: Entfernen des bestehenden Agenten, falls installiert.
  4. Alte Konfigurationsdatei entfernen: Löschen der alten Konfigurationsdatei, wenn vorhanden.
  5. Zabbix Agent MSI herunterladen: Herunterladen des Zabbix Agenten von der angegebenen URL.
  6. Installationsverzeichnis erstellen: Sicherstellen, dass das Installationsverzeichnis existiert.
  7. Zabbix Agent installieren: Installation des Agenten mittels des heruntergeladenen MSI-Pakets.
  8. Zabbix Agent Dienst starten: Starten des Agenten und setzen des Startmodus auf automatisch.

Weitere Ansible Playbooks

🤞 1x pro Monat unsere News, Tipps und Tutorials gebündelt direkt in dein Postfach!

Wir senden keinen Spam! Erfahre mehr in unserer Datenschutzerklärung.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.