Seite wählen

Icinga-Configmanagement mit Puppet

von | Nov 15, 2013 | Puppet, Nagios, Linux, Icinga

Puppet ist sehr mächtig und so gut wie grenzenlos erweiterbar. Im Zusammenhang mit Icinga tritt dann früher oder später die Frage auf ob sich diese beiden „Welten“ auch miteinander vereinen lassen. Die Antwort darauf ist kurz: „Ja!“.
Der Teufel steckt hier natürlich im Detail. Über die sog. Hauptresourcen bietet Puppet in der Standardinstallation bereits vielfältige Möglichkeiten zur Verwaltung von Monitoringlösungen an. So lassen sich schon mit „file“, „package“, „service“ u.a. sehr viele Anwendungszwecke abdecken. Für das Konfigurationsmanagement von Icinga geht das mit zusätzlichen Resourcen wie z.B. „nagios_host“ oder „nagios_service“ aber noch durchaus eleganter, die Zauberformel heißt hier: Exported Resources.
Mit Exported Resources ist es unter Puppet möglich gesammelte Daten von bestimmten Nodes auf anderen Nodes auszugeben, also dort zu exportieren. Das bedeutet das definierte Daten von bestimmten Hosts, wie z.B. die IP-Adresse, durch den Puppetmaster in einer zentralen Datenbank (PuppetDB) gespeichert werden und auf anderen Hosts gesammelt weiterverarbeitet werden können.
Hier ein Beispiel eines Puppetcodes wie das Einsammeln von Daten zum Erstellen der Icinga-Hostkonfiguration aussehen könnte:

@@nagios_host { "$fqdn":
     ensure => "present",
     alias => "$hostname",
     address => "$ipaddress",
     max_check_attempts => "3",
     use => "generic-host",
}

Wenn einem Node diese exportierte Resource zugewiesen ist, werden die darin enthaltenen Variablen beim Puppetlauf durch hostspezifische Inhalte (sog. Facts) ersetzt und in der zentralen Datenbank des Puppetmasters abgespeichert. In diesem Fall sind das also Full Qualified Domain Name ($fqdn), Hostname ($hostname) und die primäre IP-Adresse ($ipaddress).
Der folgende Puppetcode sorgt dann dafür das die zuvor gesammelten Daten in einer gemeinsamen Konfigurationsdatei auf dem Icingamaster ausgegeben werden:

Nagios_host <<| |>>

Der Eintrag in der Konfigurationsdatei auf dem Icingamaster würde unter Verwendung des vorhergehenden Codes dann für einen Host nach dem Export beispielhaft so aussehen:

define host {
     host_name                      puppetclient01.localdomain
     address                        192.168.56.11
     use                            generic-host
     max_check_attempts             3
     alias                          puppetclient01
}

Natürlich können neben Hosts im Zusammenhang mit Icinga noch weitere Resourcen für Services, Kontakte, Kontaktgruppen, uvm. verwendet werden. Auch bieten die einzelnen Resourcen viele andere Parameter für das Feintuning an. Mit Puppet-Bordmitteln ist es außerdem möglich Berechtigungen und Abhängigkeiten zu steuern, sodass z.B. der Eintrag zum Laden der neuen Konfigurationsdatei in die „icinga.cfg“ automatisch erfolgt und auch der Icinga-Dienst im Anschluss von alleine neu geladen wird.

Markus Waldmüller
Markus Waldmüller
Head of Strategic Projects

Markus war bereits mehrere Jahre als Sysadmin in Neumarkt i.d.OPf. und Regensburg tätig. Nach Technikerschule und Selbständigkeit ist er nun Anfang 2013 bei NETWAYS als Senior Manager Services gelandet. Seit September 2023 kümmert er sich bei der NETWAYS Gruppe um strategische Projekte. Wenn er nicht gerade die Welt bereist, ist der sportbegeisterte Neumarkter mit an Sicherheit grenzender Wahrscheinlichkeit auf dem Mountainbike oder am Baggersee zu finden.

0 Kommentare

Einen Kommentar abschicken

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

Mehr Beiträge zum Thema Puppet | Nagios | Linux | Icinga

Kritischer Fehler in Puppet Version 7.29.0 und 8.5.0

Eine Warnung an alle Nutzer von Puppet, aber auch Foreman oder dem Icinga-Installer, die Version 7.29.0 und 8.5.0 von Puppet enthält einen kritischen Fehler, der die Erstellung eines Katalogs und somit die Anwendung der Konfiguration verhindert. Daher stellt bitte...