Blog

Ansible - Zabbix Agent Installation unter Windows

6/22/2024 3 Min. Lesezeit Software

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 Aufgaben automatisiert werden, 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

Das Playbook prüft zunächst, ob der Zabbix-Agent bereits installiert ist. Falls ja, wird die bestehende Installation sauber entfernt, inklusive der alten Konfigurationsdatei. Anschließend wird die aktuelle MSI-Datei heruntergeladen und der Agent unbeaufsichtigt installiert. Zum Abschluss wird sichergestellt, dass der Zabbix-Agent-Dienst automatisch startet und aktiv ist.

Wichtige Variablen und ihre Funktionen

  • zabbix_agent_name Name des Windows-Dienstes des Zabbix-Agenten.

  • zabbix_agent_download_url URL zur MSI-Installationsdatei des Zabbix-Agenten.

  • zabbix_agent_temp_path Temporärer Speicherort für die heruntergeladene MSI-Datei.

  • zabbix_agent_install_folder Zielverzeichnis für die Installation des Zabbix-Agenten.

  • zabbix_server_ip IP-Adresse des Zabbix-Servers, mit dem sich der Agent verbindet.

Wichtige Aufgaben

  • Erstellen notwendiger Verzeichnisse
  • Erkennen und Entfernen bestehender Zabbix-Installationen
  • Download und Installation des Zabbix-Agenten
  • Starten und Aktivieren des Zabbix-Dienstes

Weitere Ansible Playbooks

Das gezeigte Beispiel lässt sich leicht erweitern, etwa zur Konfiguration von Firewall-Regeln, zur Verteilung individueller Konfigurationsdateien oder zur Installation weiterer Monitoring-Komponenten.