Comparison of open source configuration management software

From Wikipedia, the free encyclopedia

This is a comparison of free (libre) and open source configuration management software.

[edit] Basic properties

Programming language Software license First public release date Latest stable version
Arusha Project (ARK) Python BSD July 21, 2001 [1] 20050419 (April 19, 2005)
Bcfg2 Python 2-clause BSD-style August 11, 2004 [2] 0.9.2 (February 19, 2007)
Cfengine C GPL + parts in The Frontier Artistic Licence v.1.0 1993 2.1.22 (January 27, 2007)
ISconf Python GPL [3] 1998 4.2.8.222 (August 13, 2006)
LCFG Perl GPL 1994 2007021901c (February 19, 2007)
PCfengine Python GPL [4] No public release yet No public release yet
PIKT C GPL [5] 1998 [6] 1.18.2 (November 5, 2006)
Puppet Ruby GPL August 30, 2005 [7] 0.22.1 (February 1, 2007)
Quattor Perl Open Source EU Data Grid software license 1.0 on April 1st, 2005 [8] 1.2 (February 7, 2007)
Radmind C BSD-Style license March 26, 2002 1.7.1 (November 29, 2006)
SmartFrog Java LGPL 1.02.000 (February 11, 2004) 3.10.016 (November 13, 2006)

[edit] Short descriptions

Not all tools have the same goal and the same feature set. To help distinguish between all of these software, here is an objective short description of each one.

Arusha Project (ARK)
Manage package and configuration specification of hosts via a custom XML description language. Can be used as a frontend for Cfengine or PIKT. Provides some collaboration features between administration 'teams'. The last commit dates from March 2007.
Bcfg2
Software to manage the configuration of a large number of computers using a central configuration model and the client-server paradigm. Compared to Cfengine, the system enables reconciliation between clients' state and the central configuration specification. Detailed reports provide a way to identify unmanaged configuration on hosts. Generators enable code or template based generation of configuration files from a central data repository.
Cfengine
The veteran of open source configuration management software. Manages configuration of a large number of computers using the client-server paradigm. The server has the authoritative version of configuration: any client state which is different from the server is always reverted to the authoritative version. Configuration state is specified via a declarative language. Many sites are reported running thousands of Cfengine instances.
ISconf
Tool to execute commands and replicate files on all nodes. Unlike ClusterSSH, the nodes need not to be up; the commands will be executed when they boot. The system has no central server so commands can be launched from any node and they will replicate to all nodes.
LCFG
LCFG manage the configuration with a central description language in XML, specifying resources, aspects and profiles. Configuration is deployed using the client-server paradigm. Appropriate scripts on clients (called "components") transcribe the resources into configuration files and restart services as needed. Binaries are available for Red Hat Linux only.
PCfengine
This tool aim to be a better Cfengine written in Python. It uses Python directly as a language to describe configuration files. In contrast to Cfengine, it determines automatically the order in which actions are applied in the client.
PIKT
PIKT is foremost a monitoring system that also does configuration management. "PIKT consists of a sophisticated, feature-rich file preprocessor; an innovative scripting language with unique labor-saving features; a flexible, centrally directed process scheduler; a customizing file installer; a collection of powerful command-line extensions; and other useful tools." [9]
Puppet
Puppet consists of a custom declarative language to describe system configuration, distributed using the client-server paradigm (using XML-RPC protocol), and a library to realize the configuration. The resource abstraction layer enable administrators to describe the configuration in higher-level terms than in Cfengine, such as users, services or filesystems.
Quattor
"The quattor information model is based on the distinction between the desired state and the actual state. The desired state is registered in a fabric-wide Configuration Database (CDB), using a specially designed configuration language for expressing and validating configurations, composed out of reusable hierarchical building blocks called templates. Configurations are propagated to and cached on the managed nodes." [10]
Radmind
Radmind manages hosts configuration at the file system level. In a similar way to Tripwire (and other configuration management tools), it can detect external changes to managed configuration, and can optionally reverse the changes. Radmind does not have the higher-level configuration abstraction that tools such as BCFG2 and Puppet exhibit. A graphical interface is available (only) for Mac OS X.
SmartFrog
Java-based tool to deploy and configure applications distributed across multiple machines. There is no central server; you can deploy a .SF configuration file to any node and have it distributed to peer nodes according to the distribution information contained inside the deployment descriptor itself.