|
|
# CMT -- Config Management Tool
|
|
|
|
|
|
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`.
|
|
|
|
|
|
## Features
|
|
|
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
|
|
|
* Build an API to make it easier to integrate CMT in other software/scripts
|
|
|
|
|
|
## Requirements
|
|
|
|
|
|
For now CMT is only supported by Python 2.7. In the next update (2.6.0) we will support Python 3 fully.
|
|
|
|
|
|
### CMT Server
|
|
|
|
|
|
When installing the CMT Server we recommend to use virtualenv to create an isolated Python runtime environment for CMT. CMT has been tested with a PostgreSQL database, but other databases supported bu Django should work also. For the requirements see the [https://raw.githubusercontent.com/basvandervlies/cmt/master/requirements.txt requirements.txt] file for the dependencies.
|
|
|
|
|
|
When you don't want to use the LDAP authentication back-end, you can remove django-auth-ldap from the `requirements.txt`.
|
|
|
|
|
|
#### CMT Client
|
|
|
|
|
|
The CMT client can be downloaded via the CMT Server dashboard. The client has been designed in a way that only Python is needed (for now Python 2.7 support only) it has no other requirements. Also when you download the client, the server will add the correct configuration so you can use the client immediately.
|
|
|
|
|
|
|
|
|
## Installation & Usage
|
|
|
|
|
|
Server:
|
|
|
* [wiki:NewServer/Installation Installation]
|
|
|
* [wiki:NewServer/Usage Server Webui Usage]
|
|
|
* [wiki:NewServer/DataStructure CMT Data structure]
|
|
|
|
|
|
Client:
|
|
|
* [wiki:NewClient/InstallationConfiguration Installation and Configuration]
|
|
|
* [wiki:NewClient/CliUsage Cli Usage]
|
|
|
* [wiki:NewClient/ModuleUsage Module Usage]
|
|
|
* [wiki:NewClient/Templating Templating/parse]
|
|
|
|
|
|
## Source code
|
|
|
Currently the Subversion repository is only kept for historical purposes. All development now occurs in GIT.
|
|
|
|
|
|
* [wiki:NewReleaseChecklist Release checklist]
|
|
|
|
|
|
### Access repository
|
|
|
* [https://github.com/basvandervlies/cmt]
|
|
|
|
|
|
### Tarballs
|
|
|
Of each release a source tarball is available on:
|
|
|
|
|
|
* ftp://ftp.surfsara.nl/pub/outgoing/CMT
|
|
|
* named: CMT-<version>.src.tar.bz2
|
|
|
|
|
|
See the [wiki:NewServer/Installation installation] documentation on how to install CMT.
|
|
|
|
|
|
## Development
|
|
|
|
|
|
### Roadmap
|
|
|
|
|
|
### Branching
|
|
|
We are working with 4 kinds of branches:
|
|
|
|
|
|
* master branch, called `master`.
|
|
|
* stable branches, called `stable/<version>` (where versions consist of 2 digits like `1.0`, `1.1`, `2.0`, etc.). Those stable branches are tagged whenever bugfixes are done for a bugfix-release. Those bugfix-releases (for example as for `stable/1.0`) are tagged as `stable/<version>.<patchlevel>`, where the patchlevel is an integer that increments for each (couple of) merged bugfix(es). Stable branches are branched from master, and merged back to master whenever it's tagged as a new bugfix-release.
|
|
|
* bugfix branches, in which we have a branch for each bugfix to patch, branched from a stable branch. These branches can be locally. The branches are called `bugfix/#]/human_readable_label]` where the hash-symbol is a number referring to the ticket of the bug-report, and the `human_readable_label` an optional label to know what it's about (without knowledge of the tickets).
|
|
|
* feature branches, in which we have a branch for each new feature, branched from master. These branches can be locally, however can be public for collaboration-purposes as well. As a naming-convention we'll call these branches `feature/#[/human_readable_label]`, where the hash-symbol is a number referring to the ticket for the feature, and the `human_readable_label` an optional label to know what it's about (without knowledge of the tickets).
|
|
|
|
|
|
### Versioning
|
|
|
So, we're using 2 or 3 numbers for versions, like `x.y[.z]`:
|
|
|
|
|
|
* `x` - major version number, only incremented when changes have been introduced that aren't compatible with earlier versions.
|
|
|
* `y` - minor version number, incremented when changes have been done for new features that are compatible with earlier versions.
|
|
|
* `z` - patchlevel, introduced when the first bugfix has been done on a stable branch, and incremented at each new bugfix-release.
|
|
|
|
|
|
### Release checklist
|
|
|
* [wiki:Development2/ReleaseChecklist Release checklist]
|
|
|
|
|
|
|
|
|
## Known Issues
|
|
|
|
|
|
## Contact
|
|
|
Existing bugs and feature requests for CMT can be found in our [/report/1 overview of active tickets]. If you have any issues with CMT, which aren't listed as a ticket yet, please [/newticket create a new ticket] or [mailto:cmt@sara.nl send us an email] about it.
|
|
|
|
|
|
### Mailing lists
|
|
|
* https://lists.surfsara.nl/listinfo/cmt-users -- Anouncement and discussion list -- low volume
|
|
|
* https://lists.surfsara.nl/listinfo/cmt-dev -- Development and tickets list -- mid/high volume |
|
|
\ No newline at end of file |