mika’s advent calendar – day 16: puppet
Configuration management tools provide the ability to abstract your requirements. For example you might be running your own (procedural) scripts – which could be even platform specific (igitt) – to add new users. Instead when using a configuration management tool you instruct the system in a (declarative) specification language to do so. This provides much better scaling and management so sysadmins have enough time left for coffee and reading news.
There are several configuration management tools out there. Check out the wikipedia article “Comparison of open source configuration management software” to get a short overview. There are so many to chose from – but the major ones (at least when looking around me) are cfengine, bcfg2 and puppet. All of them have their nifty features and drawbacks – but the one I’d like to present here is puppet. Puppet is written in Ruby, is a pretty fresh project (when compared to its competitors) and has a nice developer and user community. Prominent users of puppet are for example the SANS Institute, Redhat, Fedora and Google (managing their Mac and Linux desktops and laptops).
Quoting the project homepage:
Puppet lets you centrally manage every important aspect of your system using a cross-platform specification language that manages all the separate elements normally aggregated in different files, like users, cron jobs, and hosts, along with obviously discrete elements like packages, services, and files.
The author of puppet – Luke Kanies – states in his blog:
[…] I’ve always said if it takes you more than an hour to do something useful with Puppet, I’ve screwed up.
And getting started with puppet is really just a matter of a few minutes. So consider giving it a try.
BTW: I’m locking forward to meet Luke Kanies at the OSDC 2009 Conference. :)