Michaela Mattes, System Engineer | Telekom MMS

Today we would like to introduce you to one of our open source projects: the Docker Management Container, or DMC for short.

The DMC contains a number of plugins and services that are designed to make it easy to create, test, deploy and manage infrastructures. These include tools such as Terraform, Ansible, Docker, Helm and others needed in the cloud-native world as well as in the data center.

The DMC serves as a toolbox for all these tools. In it, it is possible to install the tools in different configurations and versions. Why? Different projects and customers use different software versions, which may be incompatible with each other. Furthermore, there may be different requirements for the configuration of the tools, e.g. package dependencies or add-on modules (such as Ansible collections or Azure CLI plugins). Different states between local system and Continuous Integration pipeline and the resulting problems are thus a thing of the past.

At the same time, we have created a fast and lean way to enable new colleagues to work on other projects or to get short-term support from other colleagues. Especially when investigating errors, it is an advantage when colleagues can quickly start with the analysis instead of first having to laboriously get ready for work.

When working together in a mob session, we also save an immense amount of time if the tools for working are the same for all colleagues.

How does the DMC work?

The DMC provides a Dockerfile template that creates the Dockerfile with the desired tools and versions through a .build file and script. This Dockerfile is then used for the actual build of the container. The Dockerfile itself does not need to be kept, but is created in a CI/CD job and discarded after the docker build. We have provided examples of CI jobs in the Github repository.

Advantages

  • CI/CD systems and engineers use the same tool base – this allows better debugging
  • All engineers, developers (and also the customer) use the tools necessary for the respective purpose in the respective necessary version
  • Since it is a container, it can run anywhere containers are supported
  • Since the DMC consists entirely of code, it can be versioned
  • Deployment is simple and fast – if you can build a container, you can build the DMC

Disadvantages

  • The running system must have Docker or Podman installed:
  • Linux Client
  • Docker Desktop for Windows (also possible in wsl)
  • MacOS

Just do a docker run dmc and try it out. 

Feedback, suggestions for improvement and expansion, and of course collaboration are expressly desired.