Mediawiki als Managementoberfläche

In letzter Zeit habe ich das Mediawiki als zentrale Managementplatform entdeckt. Eigentlich war es bisher lediglich zu Dokumentationszwecken gedacht. Dadurch, dass es aber eine einfach zu nutzende XML-Exportfunktion bietet, lassen sich damit auch noch andere Dinge anstellen (oder Kombinieren). Man kann damit z.B. prima eine Nodeliste für OpenNMS verwalten (welche nicht durch autodiscovery erfasst werden). Oder gewisse Steuerungsdaten für Bash-Scripte. Oder was auch immer. Zumindest für Aufgaben wofür es sich nicht lohnt ein eigenes Interface zu stricken.

Bisher habe ich zentrale Einstellungen immer relativ mühsam in ein SVN gesichert. Zugriff für Änderungen war meist nur über die SSH Konsole möglich. Dokumentiert wurde da auch nicht viel…

Das schöne am Mediawiki ist, dass eine Versionierung schon eingebaut ist. Ausserdem lassen sich z.B. Dokumentationen oder Checklisten verlinken. Durch Kategorisierung lassen sich die Daten auch geordnet ablegen. SSL und Authentifizierung sollten natürlich selbstverständlich sein.

Per simplen wget in bash-scripten oder per curl in in perl/php ist der Zugriff in der Regel problemlos möglich. Das xml lässt sich prima mit dem Tool „xml2“ in Scripten verarbeiten…

Beispiel zum Einlesen einer Liste mit IP-Adressen:

wget -q -O - --http-user admin --http-passwd secret \
https://wiki.example.com/index.php/Spezial:Exportieren/IP_Plan \
| xml2 \
| awk '/(page\/revision\/text)*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/ {print $2}'

OpenNMS: Import aus XML

opennmsAutodiscovery in OpenNMS ist ein tolles Feature. Leider ist es nicht immer zu gebrauchen, da es derzeit nur begrenzt konfigurierbar ist. So möchte ich z.B. in einem bestimmten Netzbereich nur die jeweiligen Router der Teilnetze abfragen – und nicht alle Hosts auf Services scannen. Klar kann man auch Bereiche excluden bzw. includen – aber ich wollte ja Autodiscovery ;).

In der kommenden OpenNMS Version 1.8 sollen die Discovery bzw. die Capability-Checks (capsd) von einem neuen Daemon („provisiond“) abgelöst werden welcher sich wohl auch besser an eigene Bedürfnisse anpassen lässt – z.B. ist als nettes Feature dann z.B. auch der Import von DNS-Zonen möglich. Dies aber nur Nebenbei.

Auf der Suche nach einem alternativen Import bin ich bei XML gelandet. Da die zu überwachenden Hosts in einem internen Wiki (Mediawiki) gepflegt werden, stehen diese über die eingebaute Export-Funktion auch als XML zur verfügung. So ist z.B. der OpenNMS Artikel bei Wikipedia auch als reines XML verfügbar: http://en.wikipedia.org/wiki/Special:Export/OpenNMS.

Ein cooles Tool zum verarbeiten von XML auf der Kommandozeile ist „xml2“ (in vielen Distro-Repositories verfügbar). Kombiniert mit ein paar regulären Ausdrücken landen die richtigen IPs in einer Datei für den automatischen Import in OpenNMS:

wget -q -O - --http-user admin --http-passwd secret \
http://wiki.example.com/index.php/Spezial:Exportieren/IP_Plan \
| xml2 \
| awk '/(page\/revision\/text)*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)*(NMS:host)/ {print $2}' \
> /opt/include-hosts

„OpenNMS: Import aus XML“ weiterlesen