This article has an unclear citation style .(November 2013) |
This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.
"Verify mode" (also called dry run) refers to having an ability to determine whether a node is conformant with a guarantee of not modifying it, and typically involves the exclusive use of an internal language supporting read-only mode for all potentially system-modifying operations. Mutual authentication (mutual auth) refers to the client verifying the server and vice versa.
Agent describes whether additional software daemons are required. Depending on the management software these agents are usually deployed on the target system or on one or many central controller servers. Although Agent-less = No
is colored red and might seem to be a negative, instead, having an agent can be considered quite advantageous to many. Consider the impact if an agent-less tool loses connectivity to a node while making critical changes—leaving the node in an indeterminate state that compromises its (production?) function.
Language | License | Mutual auth. | Encryption | Verify mode | Agent-less | Incl. GUI | First release | Latest stable release | |
---|---|---|---|---|---|---|---|---|---|
Ansible | Python | GPLv3+ | Yes [a] | Yes [b] | Yes | Yes | Yes [1] | 2012-03-08 | 2023-11-11 2.15.4 [2] |
Bcfg2 | Python | BSD 2-clause [3] | Yes [c] | Yes [d] | Yes [e] | No | Yes [4] | 2004-08-11 [5] | 2015-06-11 1.3.6 [5] |
Capistrano | Ruby | MIT | Yes [b] | Yes [b] | No | 2005 | 2022-08-07 3.17.1 | ||
cdist | Python | GPLv3+ | Yes [a] | Yes [b] | Yes | 2010 | 2021-08-24 6.9.8 [6] | ||
Chef | Ruby, Erlang | Apache 2.0 | Yes [f] | Yes [g] | Yes [h] [7] | No | Yes | 2009-01-15 0.5.0 | 2023-01-05 18.1.0 (client), [8] 15.4.0 (server) [9] |
CFEngine | C [10] | GPLv3 [11] | Yes [a] | Yes [12] | Yes [13] [14] [15] [16] | No | Yes [17] | 1993 | 2025-01-07 3.25.0 [18] , 2024-12-04 3.24.1 [19] , 2024-12-04 3.21.6 [20] |
Consfigurator | Scheme (SBCL) | GPLv3+ [21] | Yes [a] | Yes [b] | No | 1.4.2 2024-07-26 [22] | |||
Guix | Scheme (Guile) [23] [24] | GPLv3+ [25] | Yes [a] | Yes [b] | No | No [26] | 1.4.0 2022-12-19 | ||
ISconf | Python | GPL [27] | Yes [i] | No [28] | 1998 | 2006-08-13 4.2.8.233 | |||
Juju | Python, Go [29] | AGPL | Yes [a] | Yes [d] | No | No | Yes [30] | 2010-09-17 [31] | 2024-02-15 3.6.0 [32] |
Local ConFiGuration system (LCFG) | Perl | GPL | Partial [33] | Partial [34] | No | No | No | 1994 | Weekly Releases |
NOC Project | Python | BSD 2.0 | Yes [a] | Yes [b] | Yes | Yes | Yes | 2012-03-08 | 2015-05-20 15.05.1 [35] |
OCS Inventory NG with GLPI | Perl, PHP, C++ | GPL | No [36] | Yes [d] | No | 2003 | 2014-07-13 [37] | ||
Open pc server integration (Opsi) | Python, Java | GPL | No | Yes [d] | No | 2004 | 2013-03-01 4.0.3 | ||
PIKT | C | GPLv2+ [38] | Yes [39] | Yes [40] | No | 1998 [41] | 2007-09-10 1.19.0 | ||
Puppet | Ruby, C++ & Clojure (server-side also Ruby before 4.0 [42] ) | Apache since 2.7.0, GPL before then | Yes [j] | Yes [d] | Yes [k] [43] | No | Yes [44] | 2005-08-30 [45] | 2024-04 8.6.0, 7.30.0 (client), [46] 2024-04 8.6.0, 7.17.0 (server) [47] |
Quattor | Perl, Python | Apache 2.0 [48] [49] | Yes [50] | Yes [51] | 2005-04-01 [52] | 2024-11-22 24.10.0 [53] | |||
Radmind | C | BSD [54] | Yes [55] | Yes [56] | No | 2002-03-26 [57] | 2008-10-08 1.13.0 [58] | ||
Rex | Perl | Apache | Yes [a] | Yes [b] | Yes | 2010-11-05 0.9.0 [59] | 2021-07-05 1.13.4 [60] | ||
Rudder | C, Scala, Rust | GPLv3, Apache 2.0 [61] | Yes [a] | Yes [d] | Yes [l] [62] | No | Yes | 2011-10-31 | 2023-07-21 7.3.4 [63] |
SmartFrog | Java | Apache 2.0 [64] | Yes [65] | Yes [65] | No | 2004-02-11 | 2012-03-13 3.18.016 [66] | ||
Salt [67] | Python [68] | Apache 2.0 [69] | Yes [70] | Yes [70] | Yes | Both [71] [72] | Yes [73] [74] | 2011-03-17 0.6.0 [75] | 2023-05-05 v3006.1 [76] |
Spacewalk | Java (C, Perl, Python, PL/SQL) | GPLv2 | Yes | Yes | No | 2008-06 [77] | 2019-01-14 2.9 [78] | ||
STAF | C++ | CPL [79] | No [m] [n] | Partial [80] | No | 1998-02-16 [81] | 2012-12-16 3.4.16 [82] | ||
Synctool [83] | Python [84] | GPLv2 [85] | Yes [o] | Yes [b] | Yes [p] | Yes [86] | 2003 [87] | 2019-08-11 6.3 [88] | |
Uyuni | Java, Python, PL/SQL (Perl) | GPLv2, Apache 2.0 | Yes | Yes | Yes | Both | Yes | 2018-06 [89] | 31-01-2024 2024.01 [90] |
Language | License | Mutual auth | Encrypts | Verify mode | Agent-less | Have a GUI | First release | Latest stable release |
Note: This means platforms on which a recent version of the tool has actually been used successfully, not platforms where it should theoretically work since it is written in good portable C/C++ or an interpreted language. It should also be listed as a supported platform on the project's web site.
AIX | *BSD | HP-UX | Linux | OS X | Solaris | Windows | Others | |
---|---|---|---|---|---|---|---|---|
Ansible | Yes | Yes | Yes | Yes | Yes | Yes | Partial [q] | Yes [91] |
Bcfg2 | Partial [r] | Yes [s] | No | Yes [t] | Partial [u] | Yes | No | No |
CFEngine | Yes | Yes [s] | Yes | Yes | Yes | Yes | Yes (enterprise version only) | Yes [v] |
cdist | Yes | Yes | Yes | No | ||||
Chef | Yes [92] | Yes | Yes | Yes | Yes | Yes | Yes [93] | Yes |
Consfigurator | Partial [94] | Yes [94] | No [94] | |||||
Guix | No | No | No | Partial [w] | No | No | No | Partial [x] |
ISconf | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Juju | Yes | Yes [95] | ||||||
Local ConFiGuration system (LCFG) | No | No | No | Partial [y] | Partial [z] | Partial [aa] | No | No |
OCS Inventory NG | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
Open pc server integration (Opsi) | No | No | No | Yes | No | No | Yes | No |
PIKT | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes [ab] |
Puppet | Yes | Yes | Yes | Yes | Yes | Yes | Yes [96] | Yes |
Quattor | No | No | No | Yes | Partial [97] | Yes | No | No |
Radmind | Yes | Yes [s] [ac] [ad] | No | Yes | Yes | Yes | Yes | No |
Rex | Yes | Yes | Yes [98] | Yes | Yes [98] | No | ||
Rudder | Yes | Partial [ae] | No | Yes | Partial [ae] | Partial [99] | Yes | Yes [af] |
SmartFrog | No [ag] | No [ag] | Yes | Yes | Yes | Yes | Yes | No [ag] |
Salt | Yes | Yes | Partial [ah] | Yes [100] | Yes | Yes [101] | Yes | Partial [ah] |
Spacewalk | No [102] | No | No | Yes [103] | No | No [104] | No | No |
STAF | Yes [ai] | Yes [aj] | Yes [ak] | Yes [al] | Yes [105] | Yes [am] | Yes [an] | Yes [ao] |
Synctool | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes [ap] |
Uyuni | No | No | No | Partial [aq] | No | No | No | No |
AIX | *BSD | HP-UX | Linux | OS X | Solaris | Windows | Others |
Not all tools have the same goal and the same feature set. To help distinguish between all of these software packages, here is a short description of each one.
An email client, email reader or, more formally, message user agent (MUA) or mail user agent is a computer program used to access and manage a user's email.
Software configuration management (SCM), a.k.a. software change and configuration management (SCCM), is the software engineering practice of tracking and controlling changes to a software system; part of the larger cross-disciplinary field of configuration management (CM). SCM includes version control and the establishment of baselines.
OpenSSL is a software library for applications that provide secure communications over computer networks against eavesdropping, and identify the party at the other end. It is widely used by Internet servers, including the majority of HTTPS websites.
OpenVPN is a virtual private network (VPN) system that implements techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities. It implements both client and server applications.
CFEngine is a configuration management system, written by Mark Burgess. Its primary function is to provide automated configuration and maintenance of large-scale computer systems, including the unified management of servers, desktops, consumer and industrial devices, embedded network devices, mobile smartphones, and tablet computers.
strongSwan is a multiplatform IPsec implementation. The focus of the project is on authentication mechanisms using X.509 public key certificates and optional storage of private keys and certificates on smartcards through a PKCS#11 interface and on TPM 2.0.
Spacewalk is open-source systems management software for system provisioning, patching and configuration licensed under the GNU GPLv2.
DNSCurve is a proposed secure protocol for the Domain Name System (DNS), designed by Daniel J. Bernstein. It encrypts and authenticates DNS packets between resolvers and authoritative servers.
Progress Chef is a configuration management tool written in Ruby and Erlang. It uses a pure-Ruby, domain-specific language (DSL) for writing system configuration "recipes". Chef is used to streamline the task of configuring and maintaining a company's servers, and can integrate with cloud-based platforms such as Amazon EC2, Google Cloud Platform, Oracle Cloud, OpenStack, IBM Cloud, Microsoft Azure, and Rackspace to automatically provision and configure new machines. Chef contains solutions for both small and large scale systems.
ssh-keygen is a standard component of the Secure Shell (SSH) protocol suite found on Unix, Unix-like and Microsoft Windows computer systems used to establish secure shell sessions between remote computers over insecure networks, through the use of various cryptographic techniques. The ssh-keygen utility is used to generate, manage, and convert authentication keys.
NixOS is a free and open source Linux distribution based on the Nix package manager. NixOS uses an immutable design and an atomic update model. Its use of a declarative configuration system allows reproducibility and portability.
Augeas is a free software configuration-management library, written in the C programming language. It is licensed under the terms of the GNU Lesser General Public License.
University of Tsukuba Virtual Private Network, UT-VPN is a free and open source software application that implements virtual private network (VPN) techniques for creating secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities. It uses SSL/TLS security for encryption and is capable of traversing network address translators (NATs) and firewalls. It was written by Daiyuu Nobori and SoftEther Corporation, and is published under the GNU General Public License (GPL) by University of Tsukuba.
Ansible is a suite of software tools that enables infrastructure as code. It is open-source and the suite includes software provisioning, configuration management, and application deployment functionality.
CopSSH is an implementation of OpenSSH for Windows. CopSSH offers both SSH client and server functionality and can be used for remote administration of Windows systems. CopSSH contains DLLs from the Cygwin Linux environment and a version of OpenSSH compiled from Cygwin. An administration GUI is also provided as of version 4.0.0.
GNU Guix is a functional cross-platform package manager and a tool to instantiate and manage Unix-like operating systems, based on the Nix package manager. Configuration and package recipes are written in Guile Scheme. GNU Guix is the default package manager of the GNU Guix System distribution.
Rudder is an open source audit and configuration management utility to help automate system configuration across large IT infrastructures. Rudder relies on a lightweight local agent installed on each managed machine.
Proxmox Virtual Environment is a virtualization platform designed for the provisioning of hyper-converged infrastructure.
Continuous configuration automation (CCA) is the methodology or process of automating the deployment and configuration of settings and software for both physical and virtual data center equipment.
WinRM (Windows Remote Management) is Microsoft's implementation of WS-Management in Windows which allows systems to access or exchange management information across a common network. Utilizing scripting objects or the built-in command-line tool, WinRM can be used with any remote computers that may have baseboard management controllers (BMCs) to acquire data. On Windows-based computers including WinRM, certain data supplied by Windows Management Instrumentation (WMI) can also be obtained.