Nachdem wir unseren Trick 17 mit dem Director veröffentlichten, schiebe ich Trick 42 direkt hinterher. Wie im Blogpost von Markus beschrieben, sind Schnittmengen aus mehreren Importquellen eine geniale Lösung um beispielsweise Hosts aus mehreren Quellen mit Informationen anzureichern. Konfiguriert man nun eine Vielzahl solcher Importquellen die für die Schnittmenge dienen sollen, bekommt man evtl. im Ablauf gewisse Probleme mit der Reihenfolge.
Zur genauen Erklärung unser Ausgangsszenario:
- CMDB 1: Quelle für die Basisdaten des Hosts (Name, IP, FQDN, …)
- CMDB 2: Quelle für den OS-Type (CentOS, OpenSuSE, Debian, …)
- CMDB 3: Quelle für den Ansprechpartner (Hr. Müller, Hr. Maier, …)
Damit die Hosts aus CMDB 1 angereichert erstellt (Import + Sync) werden können müssen zuerst CMDB 2 und CMDB 3 abgearbeitet werden. Logisch – wenn der OS-Type und der Ansprechpartner des Hosts dem Director nicht bekannt sind wird es mit Hilfe von Trick 17 auch nicht möglich sein den Host aus CMDB 1 mit Daten anzureichern.
Hauptsächlich fällt dieses Problem beim initialen Import + Sync der Daten auf. Je nachdem wie oft sich eure Importquellen ändern kann dies „gar nicht schlimm“ (Hr. Müller ist für den Server 3 Jahre zuständig) oder auch „sehr unglücklich“ (Ihr importiert die Kontaktdaten einer ständig wechselnden Rufbereitschaft) sein.
Für den Fall das die Reihenfolge der Importquellen wichtig ist gibt es eine denkbar simple Lösung.
Ihr legt für jeden Import und Sync einen Job im Director an…
…und notiert euch jeweils die ID des Director Jobs (die Zahl an der letzten Stelle der URL).
Mit Hilfe dieser ID könnt ihr nun die im Director konfigurierten Jobs von der Kommandozeile aus ausführen. Der Job mit der ID 1 (Import Job für CMDB1) kann mit dem Kommando „icingacli director jobs run 1“ gestartet werden.
Am Ende bauen wir uns dazu noch ein kleines Skript:
[code]
#!/bin/bash
# set paths and vars
ICINGA_CLI=`which icingacli`
JOB_CMD=${ICINGA_CLI}" director jobs run"
# execute jobs
echo "import and sync…"
echo -e "\tcmdb1"
${JOB_CMD} 1
${JOB_CMD} 2
echo -e "\tcmdb2";
${JOB_CMD} 3
${JOB_CMD} 4
echo -e "\tcmdb3";
${JOB_CMD} 5
${JOB_CMD} 6
[/code]
Und voilà – wir haben die Imports und Syncs in einer Reihenfolge 🙂
Wäre es nicht besser dass man in der Oberfläche direkt die Jobs Sortieren kann? Zahlt sich dafür ein Feature request aus oder gibt es Gründe warum so etwas nicht eingebaut werden sollte? Irgendwann habe ich wo gelesen dass die Reihenfolge komplett egal sein sollte und dass es nicht gewünscht ist sie sortierbar zu machen..
Hi Bernhard,
für die Version 1.4 ist etwas in der Richtung geplant und im Pre-Release auch Teils vorhanden. Da wir die Frage aber auch oft für die aktuelle 1.3 Stable erhalten wollte ich es mal im Blog verewigt haben.
Gruß, Tobias
Ah sehr cool 🙂 Danke für die Info bzgl. der 1.4 🙂