Wir fangen an mit

apt-get install php-curl git

Das Director-Modul benötigt die folgenden drei Webmodule die wir zunächst installieren.

  • IPL Modul
  • Incubator Modul
  • Reactbundle Modul

Wir beginnen mit dem IPL-Modul welches wir mit git klonen und gleich per icingacli aktivieren.

MODULE_NAME=ipl 
MODULE_VERSION=v0.5.0 
REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}" 
MODULES_PATH="/usr/share/icingaweb2/modules" 
git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}" 
icingacli module enable "${MODULE_NAME}"

Als nächstes kommt das Incubator-Modul welches wir auf die gleiche Weise bereitstellen.

MODULE_NAME=incubator 
MODULE_VERSION=v0.6.0 
REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}" 
MODULES_PATH="/usr/share/icingaweb2/modules" 
git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}" 
icingacli module enable "${MODULE_NAME}"

Zum guten Schluss das Reactbundle-Modul ebenso.

MODULE_NAME=reactbundle 
MODULE_VERSION=v0.9.0 
REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}" 
MODULES_PATH="/usr/share/icingaweb2/modules" 
git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}" 
icingacli module enable "${MODULE_NAME}"

Da der Director eine Ressource – in unserem Falle eine MySQL-Datenbank zum Speichern der Konfigurationen benötigt müssen wir diese händisch anlegen.

mysql -u root -p 
CREATE DATABASE director CHARACTER SET 'utf8'; 
GRANT ALL ON director.* TO director IDENTIFIED BY 'icinga'; 
flush privileges; 
quit

Nun installieren wir das Director-Modul selbst. Zum Zeitpunkt der Erstellung gab es leider Probleme bei der Verwendung der mittels git geklonten Version, weshalb wir hier den Tarball verwenden.

ICINGAWEB_MODULEPATH="/usr/share/icingaweb2/modules" 
REPO_URL="https://github.com/icinga/icingaweb2-module-director" 
TARGET_DIR="${ICINGAWEB_MODULEPATH}/director" 
MODULE_VERSION="1.8.0" 
URL="${REPO_URL}/archive/v${MODULE_VERSION}.tar.gz" 
install -d -m 0755 "${TARGET_DIR}" 
wget -q -O - "$URL" | tar xfz - -C "${TARGET_DIR}" --strip-components 1

Der Director kommuniziert – ähnlich wie das Web 2 Modul per API mit Icinga 2. Deshalb legen wir für den Director wieder einen passenden API-User nebst Berechtigungen an.

/etc/icinga2/conf.d# joe api-users.conf

Nun starten wir Icinga einmal neu und aktivieren das Director Modul.

systemctl restart icinga2 
icingacli module enable director 
systemctl status icinga2 

Damit der Director auch ständig im Hintergrund läuft müssen wir diesen noch Dämon einrichten.

/usr/sbin/useradd -r -g icingaweb2 -d /var/lib/icingadirector -s /bin/false icingadirector 
install -d -o icingadirector -g icingaweb2 -m 0750 /var/lib/icingadirector 
MODULE_PATH=/usr/share/icingaweb2/modules/director 
cp "${MODULE_PATH}/contrib/systemd/icinga-director.service" /etc/systemd/system/ 
systemctl daemon-reload 
systemctl enable icinga-director.service 
systemctl start icinga-director.service 

Bevor wir die abschliessende Directorkonfiguration in der Web-GUI vornehmen setzen wir gleich noch die TicketSalt Konstante in der constants.conf Datei. Diese wird benötigt damit wir später die automatische API-Aktivierung von Clients, zum Beispiel Windows-Clients mit Icinga for Windows durchführen können.

/etc/icinga2# joe constants.conf

Anschliessend starten wir Icinga einmal neu und fahren mit der Konfiguration in der Web-GUI fort.

systemctl restart icinga2

Zunächst erstellen wir eine neue Ressource mit der MySQL-Datenbank „director“ welche vom Director zum Speichern verwendet wird.

Hier geben wir nun die Einzelheiten zur Datenbank an. Wichtig ist dass hier als Zeichensatz der Wert „utf8“ angegeben wird.

Nach erfolgreicher Prüfung und Speicherung der Datenbankzugangsdaten können wir das Datenbankschema erstellen lassen.

Jetzt stellen wir mit Hilfe der API-Daten von oben, die Verbindung mit Icinga selbst her damit der Director neue Konfigurationsdaten auch erfolgreich ausrollen kann.

Als „Name des Endpunkts“ geben wir den FQDN des Icinga2 Host an. Die API-Benutzerdaten stammen aus der Konfiguration auf der Konsole. Zum Abschluss klicken wir auf die Schaltfläche „Import ausführen“.

Nach dem Import stellt uns der Director nach ein paar Sekunden das erste Deployment zum ausrollen zur Verfügung. Dies erkennt man an dem orangefarbenen Informationsfeld rechts neben dem Aktivitätslog. Um dieses auszurollen klicken wir auf Aktivitätslog.

Mit dem Klick auf die „austehenden Änderungen“ können wir die Übertragung starten.

Sobald die Änderungen erfolgreich ausgerollt sind wir das als „letztes“ Deployment in der Liste mit einem grünen Haken davor angezeigt.

Weiter machen wir mit der Installation der grafischen Analyse Tools für ein paar schicke Performancegraphen mittels Graphite, Graphite-Web & Icinga Modul for Graphite.