Ich hatte das Problem, dass ich alle Nodes in einer OpenNMS DB in eine neue OpenNMS DB importieren sollte. Allerdings soll im neuen OpenNMS provisiond voll ausgenutzt werden (siehe hier).

Mittels Excel habe ich mir die Befehle gebastelt. Ein wenig Excelkenntnisse sind daher von Nöten.

Als erstes sollte man sich im Klaren sein, was man will. In meinem Fall konnte ich alle Nodes in Kategorien (provisioning groups) wie „server“, „printer“ oder „router“ zusammenfassen.

Über die Seite

http://OPENNMSSERVER:8980/opennms/element/nodeList.htm?listInterfaces=true

bekommt man alle Nodes und deren IPs angezeigt. Diese habe ich mit Hilfe von „kopieren/einfügen“ in ein Excelsheet (Tabelle: serverliste) kopiert (ggfs. Hyperlink entfernen und linksbündig setzen).
Allerdings habe ich Excel nicht dazu bewegen können die IPs zweifach in der Tabelle „server“ untereinander anzeigen zu lassen. D.h. man muss in der Tabelle „serverliste“ die IPs doppelt hinterlegen. Ging mit STRG+SHIFT-Pfeil-rechts -> STRG+C -> STRG++ recht schnell bzw. immer noch schneller als alle Kommandos per Hand einzugeben.

Tabelle „server“ macht dann die Arbeit und erstellt die Bash Kommandos. Diese kann man dann in ein Script packen und dem neuen Server unter /[usr/share|opt]/opennms/bin/ ausführen.

So sieht das dann aus:

./provision.pl requisition add server  
./provision.pl node add server 1 server1
./provision.pl interface add server 1 192.168.1.1
./provision.pl interface set server 1 192.168.1.1 snmp-primary P
./provision.pl node add server 2 server2
./provision.pl interface add server 2 192.168.1.2
./provision.pl interface set server 2 192.168.1.2 snmp-primary P
./provision.pl node add server 3 server4
./provision.pl interface add server 3 192.168.1.4
./provision.pl interface set server 3 192.168.1.4 snmp-primary P

Zuerst wird eine prov. Group „server“ erstellt, dann nodes, interfaces und das snmp-primary Flag erstellt. Nun über die GUI noch die Detektoren der Gruppe anpassen und das hier ausführen:

./provision.pl requisition import server

oder in der GUI auf „Syncronize“ klicken.

Hier das Excel:
prov-bash

edit1: Habe noch zwei weitere Tabellen eingefügt. router und routerliste. Dort passiert das gleiche nur mit 2 Interfaces wobei das VPN Interface mit den 172.er Adressen als Primary SNMP gesetzt wird und die externe IP mit N.

edit2: Ich habe außerdem noch die Tabelle „router-assets“ hinzugefügt. Damit ist es möglich asset Info-Befehle zu generieren.
Die Assets bekommt man z.B. so aus der alten OpenNMS DB heraus:

psql -F , -A  -t -U opennms opennms -c
"SELECT
  node.nodelabel,
  ifservices.ipaddr,
  ipinterface.issnmpprimary,
  assets.manufacturer,
  assets.modelnumber,
  assets.serialnumber,
  assets.address1,
  assets.city,
  assets.zip
FROM ifservices
 JOIN node ON (ifservices.nodeid=node.nodeid)
 JOIN ipinterface ON (ifservices.ipinterfaceid=ipinterface.id)
 JOIN assets ON (assets.nodeid=node.nodeid)

WHERE

 node.nodetype!='D' AND
 ifservices.status = 'A' AND
 node.nodelabel like 'router%'

ORDER BY
 node.nodelabel,
 ifservices.ipaddr ;"

WICHTIG:

  • Der Übersicht wegen habe ich es schön formatiert. In der Bash muss das ein Einzeiler sein!
  • Außerdem sollte man beim „Assetimport“ immer die Werte in “ schreiben
  • bei den Feldnamen immer auf Großschreibung achten. Z.B. „serialNumber“
  • Die foreignIDs müssen nur in einer Provisioning Group einzigartig sein. Wenn man allerdings noch mit anderen Systemen wie Inventarisierungsprogrammen zusammenarbeitet, ist eine global einzigartige ID nicht verkehrt.