Michaela Mattes, System Engineer | Telekom MMS

Heute möchten wir euch eines unserer Open-source-Projekte vorstellen: den Docker Management Container, oder auch kurz: DMC.

Der DMC enthält eine Reihe von Plugins und Diensten, die das Erstellen, Testen, Bereitstellen und Verwalten von Infrastrukturen erleichtern sollen. Dazu zählen Tools wie Terraform, Ansible, Docker, Helm und andere Werkzeuge, die in der Cloud-Native-Welt sowie im Rechenzentrum benötigt werden.

Der DMC dient hierbei als Werkzeugkasten für alle diese Tools. In diesem ist es möglich, die Tools in unterschiedlichen Konfigurationen und Versionen zu installieren. Warum? Unterschiedliche Projekte und Kunden haben verschiedene Softwarestände, die unter Umständen inkompatibel zueinander sind. Des Weiteren kann es unterschiedliche Anforderungen an die Konfiguration der Tools geben, z.B. Paket-Abhängigkeiten oder Zusatzmodule (wie. z.B. Ansible-Collections oder Azure CLI-Plugins). Unterschiedliche Versionsstände zwischen lokalem System und der Continuous Integration-Pipeline und den daraus folgenden Problemen gehören somit der Vergangenheit an.

Gleichzeitig haben wir eine schnelle und schlanke Methode geschaffen, es neuen Teammitgliedern zu ermöglichen, in anderen Projekten mitzuarbeiten oder kurzfristige Unterstützung durch andere Kolleg*innen zu erhalten. Gerade beim Untersuchen von Fehlern ist es von Vorteil, wenn Mitarbeitende schnell mit der Analyse starten können anstatt sich erst mühsam arbeitsfähig zu machen.

Auch beim gemeinsamen Arbeiten in einer Mob-Session sparen wir ungemein viel Zeit, wenn die Tools zur Arbeit bei allen Kollegen gleich aussehen.

Wie funktioniert der DMC?

Der DMC stellt ein Dockerfile Template bereit, welches durch ein .build File und Script das Dockerfile mit den gewünschten Tools und Versionen erstellt. Dieses Dockerfile wird dann für den eigentlichen „Build“ des Containers verwendet. Das Dockerfile selber muss nicht Vorgehalten werden, sondern wird in einem CI/CD Job erstellt und nach dem „docker build“ wieder verworfen. Beispiele für CI-Jobs haben wir im Github-Repository hinterlegt.

Vorteile

  • CI/CD-Systeme und Engineers nutzen gleiche Tool-Basis – dadurch ist besseres Debugging möglich
  • alle aus den Bereichen Engineering, Entwicklung (und auch der Kunde) nutzen die für den jeweiligen Zweck notwendigen Tools in der jeweils notwendigen Version
  • Da es sich um einen Container handelt, kann dieser überall laufen, wo Container unterstützt werden
  • Da der DMC komplett aus Code besteht, kann er versioniert werden
  • Die Bereitstellung ist einfach und schnell – wer einen Container bauen kann, kann den DMC auch bauen

Nachteile

  • das ausführende System muss Docker oder Podman installiert haben:
    • Linux Client
    • Docker Desktop for Windows (auch in der wsl möglich)
    • MacOS

Macht doch einfach mal ein docker run dmc und testet es aus. 

Feedback, Vorschläge zur Verbesserung und Erweiterung sowie natürlich Mitarbeit sind ausdrücklich gewünscht.



Du willst das Morgen und Übermorgen bei uns mitgestalten? Dann schau gleich bei unserer Stellenbörse vorbei und werde Teil unseres Teams:
> (Senior) DevOps Engineer