Simpler CMDB-Import mit Icinga Director
Icinga Director-Anpassungen
Der erste Schritt ist es, die externe Datenbank als Ressource anzulegen. Dazu sind Klicks auf
und notwendig. Als Typ wird SQL-Datenbank ausgewählt, das Formular in etwa wie folgt ausgefüllt:
Ein Klick auf
stellt eine Test-Verbindung her und speichert die Resource im Idealfall ab.Der nächste Schritt ist es, die Datenquelle innerhalb Icinga Director zu definieren - es folgen Klicks auf
und . Neben einem sinnvollen Namen wird wieder SQL als Typ ausgewählt. In unserem Beispiel wird der Dialog wie folgt ausgefüllt:- Schlüsselspaltenname: host_name (Feldname der den Hostname enthält)
- Resource name: Name der zuvor angelegten SQL-Resource
- DB Query: SELECT host_name, host_ip, host_desc from hosts;
Beim Einsatz marktüblicher CMDB-Produkte wird es vermutlich notwendig sein, die Inhalte der Felder zu manipulieren, beispielsweise um die Schreibweise zu ändern oder Domänen-Namen anzuhängen. Anpassungen dieser Art können in der Registerkarte
definiert werden. Wurde die Datenquelle konfiguriert, kann sie im Reiter mit einem Klick auf auf Updates geprüft werden. Ein weiterer Klick auf importiert und verarbeitet Daten - im Reiter können die Informationen anschließend eingesehen werden. In unserem Fall sollte die Tabelle wie folgt aussehen:Schön - die Daten können wir nun auslesen! Mithilfe eines Synchronisationsjobs können wir dafür sorgen, dass die Hosts in die Icinga Director-Datenbank übernommen werden. Um einen solchen zu erstellen, klicken wir auf den Reiter und anschließend auf . Neben einem sinnvollen Namen wählen wir den -Objekttyp aus. Unter können wir definieren, wie der Director mit den neu gewonnen Daten umgeht - er kann lokal definierte Informationen komplett ersetzen ( ) oder sie ergänzen ( ). Diese Einstellung hängt ganz von der verwendeten CMDB ab - ich habe mich für die Ergänzung entschieden, da ich beispielsweise Services und Notifications nicht über die CMDB abbilde. Bereinigen definiert, ob in der Quelle gelöschte Informationen auch aus der Icinga Director-Datenbank gelöscht werden. Auch hier kommt es wieder drauf an, wie ihr mit den verschiedenen Informationsquellen umgehen wollt. Prinzipiell werden die importierten Informationen meistens mit weiteren Einstellungen kombiniert (z.B. Services, Notifications, ...) - in meinem Setup macht es Sinn, entfernte Hosts aus der Director-Datenbank zu entfernen.
Wurde der Job definiert, kann er im ersten Reiter mit Klicks auf
und getestet und gestartet werden. Wurde er fehlerfrei ausgeführt, ist ein entsprechender Eintrag im Reiter zu sehen. Klickt man auf den Eintrag, wird sogar ein detailliertes Protokoll angezeigt.
Schön und gut - wir haben eine Datenquelle samt Synchronisation konfiguriert. Aber richtig praktisch ist es für viele erst dann, wenn das vollautomatisiert ausgeführt wird - und hier kommen Aufträge ins Spiel. Mit beherzten Klicks auf den Reiter
und wird ein weiterer Assistent zur Erstellung eines Jobs gestartet. Will man den bereits beschriebenen Vorgang vollständig automatisieren, müssen zwei Jobs erstellt werden:- Import der Hosts aus der Datenbank
- Erstellen und Ausrollen der Konfiguration
Insbesondere bei letzterem werden die Meinungen weit auseinander gehen. In vielen Umgebungen ist das Ausrollen der Konfiguration eine Aufgabe, die nicht automatisiert stattfinden soll - beispielsweise um weitere Anpassungen zu überprüfen. In manchen Entwicklungs- und Testumgebungen kann das aber durchaus sinnvoll sein - hier entscheidet wieder ihr, was für euch am besten ist.
Neben einem sinnvollen Namen wird die Art des Jobs gefragt - für den ersten Job wählen wir
, für den zweiten . Beim Importieren der Informationen muss noch die zugehörige Datenquelle angegeben werden. Für jeden Job wird ein Intervall in Sekunden angegeben - beispielsweise 86400 für einen täglichen Durchlauf. Meine Job-Einstellungen sehen wie folgt aus:
Probiert es aus - ihr werdet sehen, dass unterhalb des Menüpunkts
etwaige Änderungen an der Konfiguration dokumentiert werden. Mit einem Klick auf den Protokolleintrag seht ihr sogar detaillierte Änderungen des Codes.Fazit
Ich finde es faszinierend, wie leicht sich Fremdinformationen sinnvoll mithilfe des Icinga Directors importieren und umsetzen lassen. Es erfordert zwar einige Tests, doch insbesondere in größeren Umgebunden kann man so zahlreiche Arbeitsstunden einsparen und auch stetige Anpassungen erleichtern. An der Stelle ein großes Lob an das Icinga-Team, tolle Arbeit!
Dieser Artikel erschien ursprünglich im Blog von Christian Stankowic. Veröffentlichung mit freundlicher Genehmigung.