open source configuration automation

While looking at some open source projects in the area of configuration management and automation, I stumbled upon several projects and links, which I think might be useful to the community.

Bcfg2, developed in the Argonne National Laboratory. Licensed under 2-clause BSD-style license

Bcfg2 allows you to describe and deploy complex configurations across pools of GNU/Linux and Unix systems, leading to a consistent, reproducible, and verifiable description of your environment. Bcfg2′s visualization and reporting tools aid in your day-to-day administrative tasks. Its unique analysis features help you cope with the ever-increasing complexity of your networks.

Cfengine developed by Mark Burgess from the Oslo University College, Norway. Licensed under GPL2

It is used to implement policy-based configuration management on open systems (Unix-like environments), through the interpretation of it’s own declarative language.

The program focuses on a few key areas that scripts tend to mishandle. From a single configuration files (or set of files) you specify, using classes, your network configuration; cfengine then parses the file and carries out the instructions, warning you about errors (or fixing them) as it goes.

You can think of cfengine as a very high level language, higher than Perl or shell: a single command can result in many hundreds of operations being performed on multiple hosts. You can also use it as a net-wide front end for ‘cron.’

Puppet developed by Luke Kanies, who founded Reductive Labs. Licensed under GPL

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.

LCFG developed by Paul Anderson from the University of Edinburg. Licensed under GPL.

LCFG is a system for automatically installing and managing the configuration of large numbers of Unix systems. It is particularly suitable for sites with very diverse and rapidly changing configurations.

For a discussion of the merit of each, see this post on The Changelog.

For some more information on the Large Scale System Configuration Workgroup, see the lssconf website.

Or the following article: Automating Network Administration, by Luke A. Kanies.