Version 9 (modified by dennis, 7 years ago) (diff)


CMT -- Config Management Tool

Currenlty we are migrating our project to gitlab: ‚Äč

CMT is a Config Management Tool originally created at SARA Computing and Networking Services, which is based in Amsterdam and known as SURFsara nowadays. It once started as a single script, went through some reincarnations, and now it consists of a Django-powered backend on the server-side, and a CLI for the client-side.

The main reason behind CMT's existence is that we needed a tool that's capable of generating configuration-files for certain software running on our clusters. CMT has a database, where we store information about our hardware, which is used to (let CMT) generate configuration-files, based on templates. At SURFsara it's used in production, to generate configuration-files for services like for example dhcpd and bind.


Some features of CMT are:

  • Dynamically extendable data model
  • Server-side Django-powered easy-to-use web-interface
  • Client-side powerful CLI, to use CMT from shellscripts, or interactive from shell
  • Automagic generation of configuration files, with templates extended on Django Templates
  • Export stored data to, and import from JSON
  • Support for multiple clusters, networks, interfaces, etc...
  • Easy to install package for the client-side functionalities
  • Import the client as a Python-module
  • Split server- and client-functionalities as much as possible, and develop as packages apart from each other
  • Build an API to make it easier to integrate CMT in other software/scripts