iX 3/2018
S. 58
Review
RZ-Verwaltung
Aufmacherbild

DCIM & IPAM mit NetBox

Verkabelte Kisten

Datacenter Inventory Management und IP Address Management sind in den großen Rechenzentren der Gegenwart unverzichtbar. NetBox bietet beide Funktionen inklusive einer vielseitigen API.

Wer für die Verwaltung eines Rechenzentrums zuständig ist, kennt die mit dieser Aufgabe einhergehenden Probleme. Eine der wichtigsten Aufgaben und zugleich eine der größten Herausforderungen ist es, sauber Buch über seine Ressourcen zu führen. Welche Racks stehen in der jeweiligen Fläche? Wie viel Strom steht insgesamt zur Verfügung, wie viel ist davon bereits in Verwendung und auf welche Phasen teilt sich der Strom auf? Welche IP-Adressen sind schon vergeben und welche stehen für neue Geräte noch zur Verfügung? All diese Details stehen – in einem gut gewarteten Setup – gesammelt in einer Wissensquelle, der „Single Source of Truth“.

Neu ist die Notwendigkeit, sich einen Überblick über die eigene Infrastruktur im Rechenzentrum zu verschaffen, nicht. Datacenter Inventory Management (DCIM) ist auch bei Setups unter 100 Knoten wichtig, IP Address Management (IPAM) spielt dort hingegen eine untergeordnete Rolle. Verändert hat sich das vorrangig durch die Cloud. In Wochenfrist ist es manchmal nötig, das Setup um Dutzende oder Hunderte Knoten zu erweitern und gleichzeitig die Übersicht über die genutzten Ressourcen zu behalten – sowohl im Hinblick auf Hardware und Strom als auch auf genutzte IP-Adressen. Hinzu kommt, dass große, skalierbare Installationen anders funktionieren als die kleinen Setups der Vergangenheit. Automatisierung spielt eine Rolle: Wer 200 Server einrichten will, braucht direkten Zugriff auf die Daten aus seinem IPAM-System. Händisches Konfigurieren würde viel zu lange dauern.

Am Markt existieren diverse Werkzeuge, die wahlweise IPAM oder DCIM können. Aus der Notwendigkeit, beide Ansätze miteinander zu verbinden, haben viele Tools im Laufe ihrer Entwicklung nachgerüstet: Racktables etwa war früher ein reines DCIM-Tool, kann heute aber auch IP-Adressen verwalten. Alternativ lassen sich diverse Tools miteinander verbinden – etwa Racktables und NIPAP. Wie aus einem Guss wirken solche Lösungen aber nicht. Hinzu kommt, dass oft die Schnittstelle zu anderen Anwendungen fehlt, denn die inzwischen omnipräsenten APIs gab es vor wenigen Jahren nur selten.

Box mit Netz

NetBox tritt als universelle Lösung für DCIM und IPAM in Umgebungen an, in denen Automatisierung eine wichtige Rolle spielt. Das Werkzeug bietet beide Kernfunktionen und verbindet sie unter einer grafischen Oberfläche. Als Schnittstelle zu Automatisierern wie Ansible oder Puppet besitzt NetBox obendrein eine RESTful API für lesenden und schreibenden Zugriff. Aus Administratorsicht handelt es sich quasi um die eierlegende Wollmilchsau in Sachen Ressourcenverwaltung im Rechenzentrum, die speziell für den Einsatz skalierbarer Lösungen gebaut worden ist.

Die Software entstammt der Feder von DigitalOcean, einem der ersten Anbieter, der in den USA Cloud-Rechenzentren betrieb. Auslöser für seine Entwicklung war die Unzulänglichkeit der Produkte, die damals zur Verfügung standen. Eine integrierte Lösung aus DCIM und IPAM gab es zum Beispiel nicht. NetBox ermöglicht unter einer einheitlichen Oberfläche sowohl die Verwaltung physischer Ressourcen wie Server, Racks, RZ-Räume, Switches, PDUs oder ähnlicher Geräte als auch die der IP-Adressen, die sich direkt Servern zuweisen lassen. Die Granulierung ist dabei ausgesprochen fein. Auf Ebene eines Servers hat der Administrator die Möglichkeit, zunächst physische Netzwerkkarten zu definieren, die er anschließend virtuellen Schnittstellen wie VLAN-Geräten oder Bonding-Interfaces zuweisen kann. Netzwerkkarten lassen sich etwa per MAC definieren. Diesen weist er dann IP-Adressen zu. Und weil NetBox auch Kabelmanagement beherrscht, lässt sich grafisch abbilden, mit welchem Switch-Port der physische Anschluss eines Servers verbunden ist.

Mühsame Installation

Entwickelt wurde NetBox mit Django, dem Webframework für Python. Im Hintergrund greift es auf eine PostgreSQL-Datenbank zurück. Für die Schnittstelle hin zum Nutzer ist ein Web Server Gateway Interface (WSGI) wie Gunicorn in Verbindung mit einem HTTP-Server verantwortlich – in der Praxis meist nginx.

Die Installation gestaltet sich komplizierter, als man es sich eigentlich wünschen würde. Denn die gängigen Distributionen bringen keine eigenen Pakete des Werkzeugs mit. Schwierig wäre es nicht, ein solches Paket zu bauen: NetBox selbst ist ein Python-Modul, das sich wahlweise mit Python 2 oder 3 nutzen lässt. Unter Ubuntu 16.04 installiert man zunächst den Python-Modulinstaller pip:

apt-get install -y python3 python3-dev ⤦
 python3-setuptools build-essential ⤦
 libxml2-dev libxslt1-dev libffi-dev ⤦
 graphviz libpq-dev libssl-dev zlib1g-dev
easy_install3 pip

Es folgt der Download der aktuellen Version von NetBox ([a], siehe ix.de/ix1803058). Zum Redaktionsschluss war dies 2.2.9, die Betaphase von 2.3 lief gerade an. Die entpackt der Administrator nach /opt:

tar xzf netbox-X.Y.Z.tar.gz -C /opt

Anschließend erstellt er einen Symlink /opt/netbox auf das Verzeichnis der eben entpackten NetBox-Quellen, damit nginx und der WSGI-Dienst die Dateien später finden.

Wie üblich bei Python-Modulen haben die NetBox-Entwickler in requirements.txt die Python-Module verzeichnet, die NetBox braucht.

pip3 install -r requirements.txt

installiert diese automatisch. Wer via ReSTful API Statusdaten einholen möchte, benötigt zusätzlich die Bibliothek NAPALM:

pip3 install napalm

Im Ordner /opt/netbox/netbox/netbox findet sich nach dem Entpacken eine Datei namens configuration.example.py, die Administratoren als Basis für die Konfiguration nutzen können, indem sie sie nach configuration.py kopieren. Drei Variablen sind von Bedeutung: ALLOWED_HOSTS, DATABASE sowie SECRET_KEY. In ALLOWED_HOSTS legt der Administrator fest, von welchen Hosts NetBox erreichbar sein soll. Es empfiehlt sich, sowohl einen Hostnamen als auch eine IP-Adresse anzugeben.