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
```yaml
- 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.
Kommentare