Configuration Management

Part of Hints for Operating High Quality Services by Mark Verber
Very Very Early Draft 0.1 -- November 11, 2005

[Note: This text was lifted from Core Operational Elements, and should start to get additional info]

When you say "configuration management" to someone who is a software engineer, what immediately comes to their mind are software systems design to make it easy to build software systems. Often a combination of software versioning and build systems like Preforce, ClearCase, etc. While this sort of configuration management is important, this document is addressing the management of service components rather than the management of building the software. In an ideal world, these two things would be fully integrated.  For some crisp idea about software / build configuration management please see the classic paper "Organizing Software in a Distributed Environment" by Butler Lampson and Eric Schmidt, and the later system called Vesta.

There needs to be a single, authoritative source of configuration state for the entire service. The configuration system should make simple things simple, and difficult things possible. It should be possible to add a configuration description for a "vanilla" server with a single update to configuration system.

In an ideal world, the configuration management system would be built around a structured, declarative description of system state, written in terms of objects which reveal configuration options of their corresponding software components. Based on the declarations, two operations are available. The first is called verification compares the existing system to the what the configuration management system indicate the system state should be. Any differences will be reported. The second operation called repair will eliminate any detected errors. The base of this system should be a simple logic language which permits parameterized descriptions of object status. Their would need to be a simple relational database which used the parameterized descriptions as data keys.

References

Applying Logic Programming to Convergent System Management Processes.

http://www.bigfix.com/

http://www.elementalsecurity.com/

Google usenix.org for configuration management

Examples:

http://reductivelabs.com/trac/puppet

http://www.panix.com/~rst/tuttle.html

http://podim.cs.kuleuven.be/podim

http://config4gnu.sourceforge.net/

http://augeas.net/docs/index.html