[howto] CMDB CIs (Computer) aus Baramundi (oder anderem System) automatisch importieren

Howto's zu OTRS Themen. Keine neuen Topics mit Fragen in diesem Forum!
Post Reply
ElectricDreams
Znuny newbie
Posts: 36
Joined: 07 Sep 2016, 16:15
Znuny Version: 5.0.13
Real Name: Christian Moeller
Company: Prüfinstitut Hansecontrol
Location: Hamburg
Contact:

[howto] CMDB CIs (Computer) aus Baramundi (oder anderem System) automatisch importieren

Post by ElectricDreams »

Hallo liebe Leute,
als absoluter OTRS Neuling habe ich den Eindruck dass viele wichtige Funktionen nur äußerst knapp dokumentiert sind, vermutlich um die Business-Version zu pushen. Daher stelle ich heute mal ein kleines Tutorrial zum Thema Datenimport aus einem Fremdsystem (bei und Baramundi) ein.

Ziel: Import aller Computer und deren wichtigster Daten in die CMDB unter "Computer"
Die Daten aller bei uns im Haus verwendeten Computer sollen jede Nacht automatisch in OTRS importiert werden. Bereits vorhandene Computer sollen nur upgedatet werden (z.B. wenn sich die Hardware geändert hat).

Bevor es los geht
Mein OTRS5 läuft unter Debian Linux, die hier beschriebenen Dateien habe ich unter /scripts/ ALS NORMALER USER (nicht Root) angelegt! Der Import funktioniert nicht als Root.
Dieses Beispiel geht von einem Inventory-System Namens Baramundi als Quelle für die CSV-Dateien aus, stattdessen kann jedes andere System auch als Datenquelle dienen.


1. Fehlende Felder ergänzen
Unter CMDB-->Neu-->Computer erscheinen die möglichen Felder der Config Item Klasse "Computer". Einige uns wichtige Felder fehlen hier, z.B. Seriennummer, MAC-Adresse, Domain,..., Baramundi_GUID, diese ergänzen wir gleich!
(Eine Spalte muß eindeutig sein, egal was sich (z.B. am Computer) ändert, diese ist bei uns die Baramundi_GUID.)
Hier erweitern wir die Klasse um die fehlenden Felder: Admin-->Config Items-->Computer-->Klassen-Definition ändern
HIER findet ihr meine komplette "CI Klasse Computer" mit den ergänzten Feldern...
Image

2. Daten aus Baramundi (oder einem anderen System) exportieren SQL-->CSV
Der einfachste Weg um an die baramundi Daten zu kommen ist, diese direkt aus dessen SQL-Datenbank zu auszulesen.
Dazu habe ich ein kleines PHP script erstellt, das eine .SQL Datei lädt, diese auf die Baramundi Datenbank abfeuert und das Ergebnis in eine .CSV-Datei speichert. Die Datenbank-Config muss in dieser Datei vorgenommen werden.
Hier ist das script (.txt nach .csv umbenennen)
Hier unser SQL für die Abfrage der Baramundi-DB, dies muss natürlich an das gewünschte Quellsystem angepasst werden.
Bevor das Script ausgeführt wird muss der ms-sql Treiber unter Linux isntalliert werden: sudo apt-get install php5-sybase
In der Datei /etc/freetds/freetds.conf muss unter Global die tds-Version auf 8.0 (statt 4.x) geändert werden.

Das Script sollte so durchlaufen:
Image
Die erzeugte CSV-Datei sollte so aussehen: bara_computer.csv

Datenimport in OTRS vorbereiten
Um eine CSV-Datei in OTRS importieren zu können, muss vorher ein Template mit der Zuordnung der Spalten(nummern) zu den CI-Attributen erstellt werden. Die Spaltennamen (erste Zeile in meinem CSV-Beispiel) spielen keine Rolle, es geht um die Spalten-Nummern! Admin-->Import/Export-->Vorlage hinzufügen
Wichtig! Die "IDENTIFIKATOR" Spalte muss eindeutig sein, sie identifiziert einen einzelnen Computer und bleibt immer gleich. Alles Andere kann sich ändern.
AUCH WICHTIG! Die Spalten Deployment State und Incident State MÜSSEN ausgefüllt sein! Ich habe hier erst mal "Production";"Operational"; eingefügt.

Meine Template sieht so aus:
Image

Jetzt, wo wir das Template erzeugt haben, taucht es in der Liste auf, und wir können testhalber eine CSV-Datei hochladen:
Image
Wenn der Import geklappt hat, machen wir gleich einen Import unter der Linux-Konsole.

CSV-Import von der Kommandozeile aus einrichten
Mit dem folgenden Befehl kann eine CSV-Datei importiert werden:
perl /opt/otrs/bin/otrs.Console.pl Admin::ITSM::ImportExport::Import --template-number 000001 bara_computer.csv
Die Template-Nummer 000001 kommt euch bestimmt bekannt vor, das Template mit den Spalten-Zuordnungen haben wir vorhin eingerichtet.
Image
In diesem Fall sind alle Computer (CIs) bereits im System, daher "skipped". Falls sich Eigenschaften seit dem letzten Import geändert haben, werden diese in der CMDB upgedatet.

Zeitgesteuerten Import-Job (Cronjob) einrichten
Erstmal erstellen wir uns eine Datei /scripts/baramundi_to_otrs.sh

Code: Select all

#!/bin/bash
echo 'Baramundi to OTRS importer';
echo 'Creating csv for Computers';
php baramundi_computer_to_csv.php
echo 'Importing to OTRS'
perl /opt/otrs/bin/otrs.Console.pl Admin::ITSM::ImportExport::Import --template-number 000001 bara_computer.csv
... und geben dieser Execute-Rechte: chmod 755 baramundi_to_otrs.sh

Diese können wir (unter /scripts/) erst mal testen: ./baramundi_to_otrs.sh

Wenn alles erfolgreich läuft, können wir den Zeit(Cron)Job einrichten. In diesem Beispiel soll der Import jede Nacht um 2:00 laufen:
benutzer@otrs5:/scripts$ crontab -e

Code: Select all

* 3 * * *      /scripts/baramundi_to_otrs.sh
Fertig - freuen!
So, fertig! Jetzt sollten die CI-Daten jede Nacht brav aus Baramundi in die CMDB flutschen.
Nach dem gleichen Prinzip kann natürlich auch Software usw. importiert werden.

Viel Erfolg!
Ein Dosenfisch stürzt sich lachend ins offene Meer
Post Reply