Dieser Artikel ist im November 2019 erschienen
Da sich die Firma ja offenbar für Netbox als IP-Adress Management (IPAM) System entschieden hat, wollte ich mir mal ansehen, was den der Teil von Netbox, der sich mit Datacenter Infrastructure Management (DCIM) beschäftigt, so zu bieten hat. Da ich natürlich keine Lust hatte, Daten per Hand einzupflegen (und weil das wahrscheinlich auch der Usecase in einem Umzugsszenario wäre), habe ich nach Möglichkeiten gesucht, bestehende Infrastruktur nach Netbox zu importieren.
Dazu habe ich mir zunächst nach Dokumentation eine eigene Netbox-Installation angelegt. Die Installation ist sehr gut beschrieben. Als Webserver habe ich nginx gewählt und diesen mit triton-deydrated mit einem Let's encrypt Zertifikat versehen.
Als Testobjekt für zu importierende Infrastruktur habe ich mir die Triton-Umgebungen ausgesucht. Ich hatte irgendwann mal mitbekommen, dass Joyent von Device42 als DCIM zu Netbox gewechselt ist. Für den Lifecycle von Server-Hardware in seinen Rechenzentren hat Joyent ein eigenes System: Conch (mit conch-shell und conch-ui). Auch das Skript, mit dem Joyent seine Server in Netbox importiert, ist im Netz zu finden:
In der Zwischenzeit gab es dann auch eine aktualisierte Version:
Um mit der Netbox-API arbeiten zu können, wird ein Authentisierungstoken benötigt. Dieses kann man sich mit den entsprechenden Berechtigungen unter /user/api-tokens
selbst ausstellen und oben im Skript eintragen.
Leider/Natürlich läuft das Skript nicht einfach so durch und legt alle Objekte an, die noch nicht in Netbox existieren. Insbesondere die Netzwerk-Rahmendaten mussten initial angelegt werden. Konkret: VRFs, Prefix/VLAN-Roles, VLANs und Prefixes. Um dies herauszufinden, ist es hilfreich, dass das Skript eine Debugfunktion hat, die eine entsprechende Debugdatei erzeugt. Da die API Daten im JSON-Format annimmt und ausgibt, ist es weiterhin hilfreich, einen JSON-Validator im Netz zu benutzen, um Fehler in der JSON-Payload schnell zu erkennen.
Für die uuid von Hosts und VMs wird in dem Skript ein custom_field
verwendet. Custom Fields können im Admin-Bereich unter /admin
angelegt werden. Im konkreten Fall ist das Feld vom Typ "Text" und ist für die Objekte unterhalb von "Virtualization" gültig.
Sinnvoll und wichtig ist ebenfalls das Anlegen eines Tenants, einer Region und der entsprechenden Sites, die man importieren möchte. Im Skript werden mindestens an einer Stelle Werte statisch gesetzt:
[...]
# local roleid=28 #virtual machine tied to dcim.joyent.us
local roleid=12 #virtual machine tied to dcim.joyent.us
local manuid=17 #Joyent tied to dcim.joyent.us
[...]
Ich bin davon ausgegangen, dass es hier um eine eigene "Device Rolle" für Triton-Zonen geht. Deshalb habe ich eine Rolle "triton-vm" angelegt und hier die entsprechende ID aus der entsprechenden Postgres-Tabelle eingetragen. Ich hatte bereits einen "Manufacturer" Joyent angelegt, weil dieser für die "Platforms" benötigt wird (und Joyent hat das auch richtig interpretiert - im Netbox-Kontext sind "Platforms" nämlich offenbar Softwareplattformen).
Nach diesen Änderungen läuft das Skript dann durch und erfaßt alle Aspekte der Headnodes. Prefixes:
Interfaces:
Inventory:
VM/Zone auf dem Headnode:
Um auch die Compute Nodes (CNs) inventarisieren zu können, war es erforderlich, zunächst die Netbox-VM für die CNs erreichbar zu machen. Dies liess sich durch eine Hostroute zum Gateway des jeweiligen Admin-Netzes erreichen. Außerdem können die CNs den Namen der Netbox-VM nicht auflösen. Dafür wurde ein entsprechender Eintrag in die /etc/hosts
gemacht.
Um auch hardwarevirtualisierte VMs auf Basis von kvm und bhyve inventarisieren zu können, mussten diese zunächst als "Platform" angelegt werden. Ein Problem gab es noch bei der Inventarisierung der RX600S6. Hier hatte das Skript als "Manufacturer" der "Platform" Fujitsu eingetragen. Nachdem der "Manufacturer" für die "Platform" ausgetragen war, lief das Skript durch.
Ein echtes Problem gibt es noch bei den CNs, die nicht Teil einer Manta-Umgebung sind. Hier hat das Skript noch Probleme die Netzwerinterfaces richtig zu parsen.
Tenant-Übersicht:
Links:
Joseph Wegners netbox-utilities, die auch Werkzeuge für die Inventarisierung von VCentern enthalten.