DevOpsDB – Swisscom

Olivier Brian

In Zusammenarbeit mit Swisscom entwickelte Puzzle ITC  eine Applikation, die aus verschiedenen Quellen ein Echtzeitinventar erstellt.

Ausgangslage

Für die Swisscom Cloud Infrastruktur sind täglich zahlreiche Systeme für einen störungsfreien Betrieb verantwortlich. Was im Sinne von einer fachübergreifender DevOps Organisation fehlte, war ein zentrales Echtzeitinventar über die einzelnen Systeme und Umgebungen hinweg.

Lösung/Projekt

Die in Ruby on Rails entwickelte Applikation erstellt aus verschiedenen Quellen ein Echtzeitinventar. Über APIs können verschiedene Systeme wie Puppet, Red Hat Virtualization, VMware vSphere, Microsoft WSUS und weitere Quellen konfiguriert und abgefragt werden. In der webbasierten Lösung können unterschiedliche Informationen über die verschiedenen Nodes intuitiv abgefragt werden. Neben den Nodes als „Sammelpunkt“ für die Daten der verschiedenen Quellen werden die Strukturen von einigen Quellen auch noch gesondert dargestellt. So kann man sich schnell durch VMwareDatacenter, -Cluster und Hosts zu den so gruppierten VMwareNodes bewegen und so ein guten Überblick bekommen und auch schnell den Ansprechpartner für ein System finden.

Die DevOpsDB bietet im Fall eines Issues eine schnelle Übersicht der Systeme ohne sich auf einzelne dedizierte Management Tools anzumelden. Das zentrale, unabhängige Inventar bietet auch wertvolle Informationen über die korrekte Lizenzierung und aktuell laufende Systeme. Die DevOpsDB kann selber als JSON API-Quelle für weitere Systeme wie IT-Inventar oder spezifische Auswertungen genutzt werden.

Die DevOpsDB kann als Discovery-Instanz in unterschiedlichen Umgebungen installiert werden. Eine zentrale Aggregator-Instanz kann die einzelnen Discovery-Instanzen zusammenführen und die Informationen über alle Umgebungen darstellen.
Aktuell ist die DevOpsDB bei der Swisscom in mehreren produktiven Umgebungen im Einsatz, in welchen jeweils eine sehr beachtliche Anzahl Systeme angezogen werden.

Die Rolle von Puzzle ITC

Puzzle ist seit der ersten Konzeption und an der anschliessenden Entwicklung im Projekt massgeblich involviert. In den letzten Jahren durften wir die Swisscom mit Weiterentwicklung, Wartung und Support unterstützten.
Aktuell wurden Swisscom interne Entwickler geschult und in die DevOpsDB Entwicklungsumgebung eingeführt. Dies ermöglicht es der Swisscom, die strategische Applikation selbständig weiter zu entwickeln und zu betreiben.

Tech Stack

Es wurde Ruby on Rails als Webframework eingesetzt, da es zusammen mit dry_crud die schnelle Entwicklung einer einheitlichen Webanwendung ermöglicht. Länger dauernde Aufgaben wie Importe aus den Datenquellen werden über Delayed::Job im Hintergrund ausgeführt. Eine Volltextsuche ist mit Sphinx realisiert, die Daten werden in einer PostgreSQL-Datenbank persistiert.
Grundsätzlich kann die Anwendung mit jedem rack-kompatiblen Applikationsserver betrieben werden, aktuell wird bei der Swisscom Phusion Passenger als Modul für den Apache Webserver eingesetzt.
Die Anwendung wird derzeit als RPM auf die Server verteilt. Dieses wird von Jenkins gebaut, welcher auch die Unit- und Integrationtests ausführt. Hier ist aktuell ein Wechsel auf Gitlab CI im Gange. Da die entsprechende Konfigurationen bei der Anwendung selbst gespeichert sind, ist die notwendige Flexiblität gegeben.
Reports und Datenanalysen wurden anfangs von der DevOpsDB selbst angeboten, werden jetzt jedoch von Metabase übernommen. Dies begünstigt die fokussierte Weiterentwicklung sowohl der DevOpsDB wie auch der gewünschten Reporte.