Ansible und Icinga2: Automatische Konfiguration von Hosts und Services

 
Die Installation und Konfiguration von Systemen erfolgt bei uns und den meisten unserer Kunden per Ansible, teilweise auch per Puppet. Wer einmal Werkzeuge wie Ansible oder Puppet verwendet hat, möchte sie nicht  mehr missen.

Wir haben in der Vergangenheit mithilfe des URI-Moduls von Ansible die Icinga2-API angesprochen, wobei die Konfiguration etwas umständlich war.

Ansible bietet seit Version 2.5 ein Modul, welches Hosts per API in Icinga2 anlegt. Dem Host können Variablen mitgegeben werden, so dass durch die Apply-Regeln von Icinga2 sehr einfach komplexe  Monitoring-Setups realisiert werden können.

Ein einfaches Beispiel:

In Ansible sind für jeden Host Rollen definiert, die beschreiben, welche Aufgaben der Host erfüllt. Soll ein System etwa als Samba- und auch DHCP-Server dienen, werden ihm im Playbook die entsprechenden Rollen  zugeordnet:

Unter Ansible enthält die Variable role_names alle Rollen für einen Host. Um sie testweise ausgeben zu lassen, verwenden wir das Debug-Modul:

Die Ausgabe zeigt die oben im Playbook definierten Rollen:

Wenn wir diese Rollen einem Icinga2-Host-Objekt als Variable mitgeben, können wir durch Apply-Regeln in Icinga2 passende Checks definieren.

Das neue Ansible-Modul icinga2_host erlaubt dies auf einfache Weise:

Dadurch wird ein Host-Objekt erzeugt, welches die Rollen und das Betriebssystem als Variablen enthält. Zur Kontrolle bedienen wir die Icinga2-API mit curl:

und sehen unseren neuen Host mit den zugehörigen Rollen und dem Betriebssystem:

Icinga2 benötigt nur noch Apply-Regeln für die verschiedenen Rollen, um automatisch passende Checks auszuführen, z. B.

Fazit:

 
Das Zusammenspiel von Icinga2 und Ansible ist mit Ansible Version 2.5 noch einfacher geworden. Die Monitoring-Konfiguration kann vollautomatisch erzeugt werden, und es ist über Host-Variablen möglich, weitere  Parameter an Icinga2 zu übergeben.

Falls nicht alle zu überwachenden Systeme schon durch Ansible verwaltet werden, ist es einfach möglich, externe Listen von Monitoring-Parametern zu verwenden und über Ansible in Icinga2 zu konfigurieren.

Vollständige Automatisierung ist die Voraussetzung, um größere und skalierbare Monitoring-Umgebungen mit Icinga2 zu betreiben.

Ansible und Icinga2
Markiert in: