Es werden viele Importe im Icinga Web 2 Modul Director via Ldap / SQL-Ressource getätigt, aber viele übesehen eine einfache Möglichkeit bestehende Dateien mittels Icinga 2 Modul „fileshipper“ in den Icinga Web 2 Director zu importieren. Wie man dieses umsetzt werde ich an einem einfachen Beispiel, einer CSV-Datei hier beschreiben.
Zuerst muss man sich das Fileshipper-Modul von Github per „git clone“ oder .zip-Datei herunterladen und in dem Verzeichnis '/usr/share/icingaweb2/modules/'
ablegen und anschießend das Verzeichnis in „fileshipper“ umbennen, denn sonst erkennt es Icinga Web 2 als Modul nicht an.
# cd /usr/share/icingaweb2/modules/ && git clone https://github.com/Icinga/icingaweb2-module-fileshipper.git
oder
# cd /usr/share/icingaweb2/modules/ && unzip master.zip
Anschließend muss das neu installierte Modul noch aktiviert werden, mit dem icingacli Kommando:
# icingacli module enable fileshipper
icingacli module list
MODULE VERSION STATE DESCRIPTION
director 1.3.1 enabled Director - Config tool for Icinga 2
doc 2.4.1 enabled Documentation module
fileshipper 1.0.0 enabled Fileshipper for Icinga Director
monitoring 2.4.1 enabled Icinga monitoring module
Es geht aber aber auch über die Icinga Web 2 – Oberfläche siehe Screenshot:
Nachdem das Modul installiert und aktiviert ist kann es losgehen. Zuerst erstellt man das Verzeichnis „fileshipper“ unter # mkdir /etc/icingaweb2/modules/fileshipper
und erstellt eine import.ini Datei in der das Verzeichnis angeben wird, wo sich die zu importierenden Dateien (.csv) liegen.
[fileshipper files]
basedir = "/usr/local/share/"
Dann wird im Icinga Web 2 => Director => Automation => Add Import Source
ein Name des zukünftigen Imports z.B fileshipper-import-hosts vergeben und bei Source „Import from files (fileshipper) ausgewählt.
Jetzt muss die neue Import-Quelle noch modifiziert werden z.B. so:
Ich denke das Bild ist selbsterklärend und Bedarf keiner weiteren Erklärung.
Jetzt kann man einen Import run starten in dem man auf die Import-Source fileshipper-import-hosts und Trigger Import Run auswählt.
Nun sollte in der Voransicht (Preview) die importierten Hosts sichtbar werden.
Um jetzt aus diesen RAW-Daten Icinga 2 konforme Objekte werden zu lassen brauchen wir eine Sync-Rule die man z.B.so anlegt:
Hier wird in der Maske angeben, welcher Typ (Host-Objekt) daraus werden soll und ob bereits existierende Daten ersetzt (replace) oder zusammengeführt (merge) werden sollen.
Mit Purge können bereits existierende Daten gelöscht werde, JA oder NEIN.
Im Kartei-Reiter „Properties/Eigenschaften“ werden die Felder vom Import (Source/Quelle) den Icinga 2 konformen Zielen (Destination) zugeordnet:
Danach kann der Sync-Run der erstellten Sync-Rule gestartet werden und bei erfolgreichen Lauf, werden Konfigurations-Dateien erstellt und sind bereit für den Director zu deployen.
Im Activity-Log kann der Vorgang nochmals überprüft werden, bevor man die Konfiguration per Director deploy übernehmen kann.
So jetzt sollten nach erfolgreichem Deployment die Hosts im Icinga Web 2 unter Hosts sichtbar sein.
Im Rahmen einer Icinga 2 Fundamentals Schulung, die wir anbieten, werden auch noch weitere Import-Quellen besprochen und praktisch vollzogen.
Unter anderem haben wir noch weitere Schulungen zu Open Source Themen im Portofolio, einen Überblick bekommen Sie hier bei NETWAYS-Schulungen.

Wenn ich das so wie beschrieben mache, versucht der Direktor die Host-Objekte ohne „check_command“ anzulegen und bekommt ein Syntax-Fehler. Wo kann man das ändern?
Got a problem, the Base directory field on the GUI is empty for me.
What is your directory structure and permissions of imports.ini
Bei mir hat es nicht funktioniert, weil die Datei import.ini hieß. Ich hatte ewig mit chown usw. herumprobiert, hatte aber alles nichts gebracht.
Sie muss imports.ini heißen (beachte das „S“!!!)