Making a production environment explainable

In our production environment we're hosting a number of virtual machines and containers. As a step in the direction of Digital Sovereignty, we are evaluating several environments. ProxMox is one of them. It has a nice web user interface for managing a cluster, but we don't want to do ClickOps for our production environment.

Corey Quinn: The fourth stage managing cloud infrastructure is "clicking around in the web console, then lying about it." I call it "ClickOps."

We want to create explainable systems instead of having to hide what we do, and build our own tiny tools that can go beyond ClickOps. The ProxMox web functionality is also exposed as a REST API, so we can reuse and adapt the approach used by others to access another REST API. This allows us to create specific views on the system where we can see what interests us, and can take action directly from there.

Brief Demo

In the video we show our tooling next to the default ProxMox web interface. We have a notebook-like interface that allows us to write explanations close to tiny tools, and can integrate stakeholder specific visualizations. For us, the default user interface (UI) is showing too much, and too little detail at the same time. We customize that for our current needs. We start with our notebook on the left and the default UI on the right. Both sides show an overview of the cluster:

  • which virtual machines and containers are running where.
  • then we start a virtual machine that is currently stopped.
0:00
/0:36

A demo of controlling ProxMox with moldable tools

Further reading

The open source project we developed to support this is GtProxMox, the notebook environment we use for this is GToolkit. The development philosophy behind it is Moldable development.

Willem, who helped editing this post, wrote about some of our experiences in tooling for explainable code in the moldable development category at QWAN.

Let me know if you want some help making your production environment explainable