I’ve just pushed a load of code to Github for a project I’ve been working on in my spare time.
The project is named after one of the developer’s ex-hamster (it had to go back to the shop for being too violent, but we’d named the project by then!) and is designed to combine Change Management, Configuration Management, Auditing and integration with tools like Puppet through a DJango-based website and API.
It’s very alpha at the moment (there’s no real interface to it apart from the django-admin built in) however you can add Configuration Items and I’m currently using it as an external node database for puppet.
The project consists (at the moment!) of two parts that work, with a further two in development.
The working parts are as follows:
- CMDB – A Configuration Management DataBase that enables the recording of Configuration Items (servers/desktops/printers etc) in a central location with reference to Datacenres, Rooms, Racks, contact details for each item and contact details for its location.
- Orchestra – The configuration management integration app. This app provides the ability to add puppet classes and assign them to hosts as well as arbitrary metadata. The system_setup.rb file in the contrib directory uses the metadata as well as the information in the CMDB to create custom facts on each host, whilst the edison-ext-lookup script (also in the contrib directory) can be used by Puppet to lookup the various classes assigned to the hosts via Orchestra.
The parts that are actively being developed are:
- Auditorium – An app to help in the auditing of systems – I’m currently working on a Yum Plugin that will automatically populate the database with records of which packages have been installed on which hosts – and (hopefully) a full reporting engine allowing output in XML, HTML, JSON, YAML and PDF formats so that you can ask for all changes that have been made to a given host over a set time period and see changes (more on this next!), package installs and configuration updates on a single page, drastically improving the Mean Time To Repair.
- Change Management System – This app will have the ability to link into your source-control system (git/svn etc) and allow you to link changes made to puppet manifests/config files/systems to a given commit for a given set of hosts. It is probably the area that requires the most work and will be top of my priorities over the coming months.
There are still a few things that are missing and that I hope to have started soon, these include:
- Documentation! – I’ve been so busy coding and testing I’ve not had a chance to write this yet, I’ll hopefully have a chance to do this over the coming days.
- The ability to output libvirt compatible XML to enable the launching of VMs from within Edison
- A web interface – I’m not too good at writing these, can do the models, but design and front-end stuff is not a strong point for me! 😉
- A reports engine that is compatible with Python 2.4 so it will run successfully on Centos 5.5
The project is hosted on github so please feel free to download, play and feedback!
Looks interesting. Have you thought about using the libvirt types/providers to launch VMs from Puppetised hosts?
Yup, I’m already on it! 😉
I’ve done some previous work with libvirt (see http://github.com/proffalken/cucumber-vhost for more info!) but that was with Ruby, I’d love to get to a point where you just select the physical host for a VM to run on when you configure the VM and then click “Launch” from the web interface… Watch this space! 🙂
those are very interesting features.
I am the author of Overmind, released two weeks ago. It is a project (also Django!) that shares some of your goals, though the approach is pretty different:
Do you think we could collaborate? The features you are working on can be implemented on top of Overmind, for example (and some of them are planned anyway).
V. interested to chat to you about this – hit me up on Twitter: @proffalken