RSS Feed

Real Configuration Management

March 12, 2007 by John Minnihan

Software engineering professionals find me in Google when they’re researching Release Management, and often they will email me questions about how to approach a specific issue or challenge they are facing.

Once such email conversation comes from a new friend in Spain, who has asked for advice on Release Management topics over the past several weeks. Today, he asked about System-level Configuration Management:

How do you control change to the systems that are part of your release process?

I get this question frequently, so I thought I’d share my answer here.

Controlling change to the environment is challenging, no doubt. There are at least a couple approaches that I used to manage this; lately my preferred approach is the use of VMWare server images for each of the systems in my meta-environment. You can easily manage change to those by placing the image file itself into source control.

In absence of VMWare images, you can implement a more basic approach: take a system-level snapshot of a given system that is properly configured, using a blend of commands such as uname (for OS & kernel level), and any other “version” type commands that return version or configuration data about system components that are of interest. Pipe the results of those commands to a file that you call system-configuration-map and then store that file (and the script used to create it) in source control.

Then you can checkout the script & expected results on the target system, run the script & compare it to the expected results and immediately determine if any of those interesting bits have changed with respect to the authoritative map.

You can then write & implement a script that does all this automatically each night & emails you the results. You would know first thing every morning (or immediately on your Blackberry) if one of your important systems has changed.

Tags: , ,