2024
Juni
28
2024

NetBox als "Source of Truth"

Hinter einem Cloud-Service wie cloudscale stecken die unterschiedlichsten Systeme, über die es den Überblick zu behalten gilt. Hierzu setzen wir seit Kurzem auf NetBox, das eine Vielzahl an Informationen und Settings über all die Komponenten an zentraler Stelle sammelt und mit diesem Inventar als Basis für Engineering und Operations dient.

Strukturierte Daten statt einzelne Textfiles

Im Open-Source-Umfeld sind Plain-Text-Dateien, z.B. im YAML- oder JSON-Format, eine häufig gewählte Form für (Software-)Konfigurationen und andere Daten, die von einem automatisierten Prozess ausgewertet werden. Auch unsere Ansible-Setups, mit denen wir einen Grossteil unserer Installations- und Wartungsprozesse automatisiert haben, bezogen ihre Daten über unser Inventar lange Zeit aus einer Vielzahl solcher YAML-Files.

Mit der kürzlichen Umstellung auf NetBox werden nun Zusammenhänge, die sich mehr oder weniger offensichtlich in diesen YAML-Configs fanden, explizit in der NetBox Datenbank abgebildet, was nicht zuletzt einen zusätzlichen Schutz vor Fehlern bietet. Über die webbasierte Oberfläche von NetBox kann man durch das Inventar navigieren und sich z.B. die Belegung von Server-Racks anzeigen lassen oder nachschauen, welche Geräte sich ein Chassis teilen.

Umfangreich und flexibel

NetBox unterstützt eine Vielzahl von Angaben zu jedem Gerät. Neben Standort, Position im Rack, Gerätetyp und Netzwerk-Details kann beispielsweise auch erfasst werden, ob die Kühlluft von der Gerätefront zur -rückseite fliesst oder umgekehrt. Zu den relevantesten erfassten Angaben gehört bei cloudscale insbesondere die Rolle, die ein Gerät erfüllt – also ob es sich z.B. um einen Storage-Server, einen Switch oder ein Monitoring-System handelt.

Unsere in Ansible automatisierten Tasks holen dann die Hosts, auf die sie angewendet werden sollen, via API aus NetBox; ebenso Host-spezifische Configs wie z.B. MAC-Adressen. Die dazu nötige Schnittstelle stellt das in der NetBox Ansible Collection enthaltene Inventory Plugin bereit. Um die Performance auch bei komplexeren Playbooks zu verbessern, nutzen wir Caching: Die benötigten Daten werden zu Beginn des Playbook-Runs einmalig geholt, für den ganzen Run behalten und anschliessend verworfen, so dass ein nächster Run wieder mit den aktuellsten Daten starten wird.

In unseren fein gegliederten Ansible-Setups sind (physische und virtuelle) Hosts häufig mehr als nur einer Ansible-Gruppe zugewiesen, allerdings ist NetBox auf maximal eine Rolle pro Gerät limitiert. Um die bestehende Struktur in NetBox abbilden zu können, haben wir uns deshalb entschieden, nur die jeweils primäre Kind-Gruppe (unterste Gruppe im Vererbungs-Baum) dem Gerät als Rolle zuzuweisen. Eventuelle weitere Kind-Gruppen vergeben wir in NetBox mittels "Tags". Diese speziellen Tags wandeln wir dann in einem intern entwickelten Ansible Plugin zu Gruppen um und fügen diese zur Playbook-Laufzeit als Variable dem entsprechenden Host hinzu.

Mehr als Netzwerk

Offiziell richtet sich NetBox an Network Engineers. Der Anspruch, "a cohesive, extensive, and accessible data model for all things networked" zu bieten, macht aber deutlich, dass der Anwendungsbereich viel breiter ist. So können auch unsere Kunden ihre virtuellen Server in NetBox abbilden, zusammen mit deren Eigenschaften wie dem jeweiligen Cloud-Standort, IP-Adressen, privaten Netzen etc. Im Zusammenspiel mit unserer Ansible Collection ist es sogar möglich, bestehende Cloud-Setups in NetBox zu importieren.

Als Source of Truth kann NetBox schliesslich auch die Führung übernehmen: Neue virtuelle Server werden dann zuerst in NetBox erfasst und basierend auf diesen Daten dann von Ansible automatisiert erstellt und konfiguriert.


Mit NetBox steht ein mächtiges Tool zur Verfügung, um die Tasks rund um das Inventar weiter zu automatisieren. Zudem können wir dank Open-Source auch eigene Verbesserungen an die Community zurückgeben. Mit NetBox als Source of Truth stützen sich alle Beteiligten auf korrekte Infos zum Inventar – via Ansible Playbooks genauso wie im webbasierten GUI.

Eine verlässliche Basis.
Dein cloudscale-Team

Zurück zur Übersicht