Comparison of open-source configuration management software: Difference between revisions
Content deleted Content added
→Basic properties: Add Consfigurator. |
Citation bot (talk | contribs) Add: website, title. Changed bare reference to CS1/2. | Use this bot. Report bugs. | Suggested by Folkezoft | Linked from User:Folkezoft/sandbox | #UCB_webform_linked 427/921 |
||
(29 intermediate revisions by 17 users not shown) | |||
Line 10:
==Basic properties==
"Verify mode" (also called [[dry run (testing)|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.
<div class="overflowbugx" style="overflow:auto; width:99%;">
Line 37:
| {{yes}}<ref>{{cite web|url=http://www.ansible.com/products/awx-project/faq|title=AWX Project FAQ - Ansible.com|author=Red Hat, Inc.|work=ansible.com}}</ref>
| style="text-align:left;"| 2012-03-08
| style="text-align:left;"|
|-
! {{rh}} | [[Bcfg2]]
| Python
| [[
| {{yes}}{{efn|name="Certificate and Passwords"|Certificate and Passwords: Uses SSL X.509 certificate and fingerprint for clients to authenticate server, and passwords for server to authenticate clients; clients should only share the same password if they are allowed access to each other's configuration data.}}
| {{yes}}{{efn|name="SSL"|SSL: Uses the Secure Sockets Layer, Transport Layer Security (TLS) for encryption.}}
Line 52:
! {{rh}} | [[Capistrano (software)|Capistrano]]
| [[Ruby (programming language)|Ruby]]
| [[MIT License|MIT]]
|
| {{yes}}{{efn|name="Secure Shell"}}
Line 77:
| {{yes}}{{efn|name="RSA Shared Keys"|Per request signed headers and [[pre-shared key]]s.}}
| {{yes}}{{efn|name="SSLpayload"|Payload encryption via SSL if HTTPS proxy is configured.}}
| {{yes}}{{efn|name="Verify-Chef"|Chef 10.14.0+ (called why-run mode)}}<ref>{{cite web |url=http://tickets.opscode.com/browse/CHEF-13 |title=[#CHEF-13] Add -noop support - Opscode Open Source Ticket Tracking |publisher=Tickets.opscode.com |access-date=2014-02-10 |archive-url=https://web.archive.org/web/20140226055656/https://tickets.opscode.com/browse/CHEF-13 |archive-date=2014-02-26 |url-status=dead
| {{no}}
| {{yes}}
Line 92:
| {{yes}}<ref name="CFEngine Enterprise">{{cite web |url=https://cfengine.com/product/ |title=CFEngine Enterprise Mission Portal|publisher=Northern.tech AS.}}</ref>
| style="text-align:left;"|1993
| style="text-align:left;"|
2025-01-07 2025- |-
! {{rh}} | Consfigurator
| [[Scheme (programming language)|Scheme]] ([[Steel Bank Common Lisp|SBCL]])
| [[GNU General Public License#Version 3|GPLv3+]]<ref>{{cite web | title=Consfigurator | url=https://spwhitton.name/tech/code/consfigurator/ }}</ref>
| {{yes}}{{efn|name="Key Pair"}}
| {{yes}}{{efn|name="Secure Shell"}}
Line 104 ⟶ 106:
| {{no}}
|
|
|-
! {{rh}} | [[Guix]]
| [[Scheme (programming language)|Scheme]] ([[GNU Guile|Guile]])<ref>https://guix.gnu.org/en/manual/en/guix.html#System-Configuration {{Bare URL inline|date=August 2025}}</ref><ref>https://guix.gnu.org/en/manual/en/guix.html#Invoking-guix-deploy {{Bare URL inline|date=August 2025}}</ref>
| [[GNU General Public License#Version 3|GPLv3+]]<ref>https://git.savannah.gnu.org/cgit/guix.git/tree/gnu.scm?h=v1.4.0#n8 {{Bare URL inline|date=August 2025}}</ref>
| {{yes}}{{efn|name="Key Pair"}}
| {{yes}}{{efn|name="Secure Shell"}}
Line 115 ⟶ 117:
| {{no}}<ref>It requires the guix daemon on the target Guix system.</ref>
|
|
|-
! {{rh}} | [[ISconf]]
| Python
| GPL<ref>{{cite web |url=http://trac.t7a.org/isconf/browser/trunk/LICENSE |title=/trunk/LICENSE - ISconf
|{{yes}}{{efn|name="HMAC"|HMAC: Uses [[HMAC]] signatures on all network traffic.}}
| {{no}}<ref>Improved security which would include an encrypted, mutually authenticated, peer-to-peer message bus is tracked here {{cite web |url=http://trac.t7a.org/isconf/ticket/39 |title=#39 (Implement TCP mesh) - ISconf - Trac |access-date=2007-04-17 |url-status=dead |archive-url=https://archive.today/20120716131832/http://trac.t7a.org/isconf/ticket/39 |archive-date=2012-07-16
|
|
Line 135 ⟶ 137:
| {{no}}
| {{no}}
| {{yes}}<ref>{{cite web |url=https://demo.jujucharms.com/trusty/juju-gui/ |title=Juju Gui |publisher=jujucharms.com |date=2015-06-15 |access-date=2015-06-21 |archive-url=https://web.archive.org/web/20150621233749/https://demo.jujucharms.com/trusty/juju-gui/ |archive-date=2015-06-21 |url-status=dead
| style="text-align:left;"|2010-09-17<ref>{{cite web|url=https://launchpad.net/juju/+series |title=timeline
| style="text-align:left;"|
|-
! {{rh}} | Local ConFiGuration system ([[LCFG]])
| [[Perl]]
| GPL
| {{partial}}<ref>LCFG does not provide its own transport mechanism; it relies on an external program, most often Apache. Using Apache it should be possible to do mutual authentication in several ways; however the documentation at [http://www.lcfg.org/doc/guide.pdf The Complete Guide to LCFG], Section 9.4: Authorization and Security, shows access control based on IP address ranges, implying that the client does not authenticate itself to the server via an SSL certificate; it also does not mention if the LCFG client checks the validity of the server's SSL certificate (such as via a per-site fingerprint distributed with the client, or a chain of trust to an accredited CA). It mentions that there can be a per-client password in the profile, but also states that ''"The contents of the LCFG profile should be considered public"''.</ref>
Line 152 ⟶ 154:
! {{rh}} | [[NOC (software)|NOC Project]]
| [[Python (programming language)|Python]]
| [[BSD
| {{yes}}{{efn|name="Key Pair"}}
| {{yes}}{{efn|name="Secure Shell"}}
Line 162 ⟶ 164:
|-
! {{rh}} | [[OCS Inventory]] NG with GLPI
| Perl, [[PHP]], [[C++]]
| GPL
| {{no}}<ref>Server authenticates to client, but client does not authenticate to server. See [
| {{yes}}{{efn|name="SSL"}}
|
Line 195 ⟶ 197:
|-
! {{rh}} | [[Puppet (software)|Puppet]]
| Ruby, [[C++]] & [[Clojure]] (server-side also Ruby before 4.0<ref>{{cite web |url=https://puppet.com/blog/evolving-puppet-for-next-10-years |title=Evolving Puppet for the Next 10 Years |publisher=Luke Kanies |date=2014-09-23 |access-date=2017-05-26}}</ref>)
| Apache since 2.7.0, GPL before then
| {{yes}}{{efn|name="Certificates"|Certificates: Uses SSL X.509 Certificates for mutual authentication. Can use any SSL Certificate Authority to manage the Public Key Infrastructure.}}
| {{yes}}{{efn|name="SSL"}}
| {{yes}}{{efn|name="Verify-Puppet"|Using the --noop option}}<ref>{{cite web |url=http://docs.puppetlabs.com/man/agent.html |title=puppet agent Man Page — Documentation — Puppet Labs |publisher=Docs.puppetlabs.com |access-date=2014-02-10 |archive-url=https://web.archive.org/web/20130707135331/http://docs.puppetlabs.com/man/agent.html |archive-date=2013-07-07 |url-status=dead
| {{no}}
| {{yes}}<ref>{{cite web|url=http://www.olindata.com/blog/2014/01/puppet-management-gui-comparison|title=Puppet Management GUI Comparison|work=olindata.com|access-date=2015-01-12|archive-url=https://web.archive.org/web/20150117063953/http://www.olindata.com/blog/2014/01/puppet-management-gui-comparison|archive-date=2015-01-17|url-status=
| style="text-align:left;"|2005-08-30<ref>{{cite web|url=http://puppetlabs.com/downloads/puppet/?C=M;O=A |title=Index of /puppet |publisher=Puppetlabs.com |access-date=2014-02-10}}</ref>
| style="text-align:left;"|2024-04 8.6.0, 7.30.0 (client),<ref>{{cite web |title=Puppet release notes |url=https://puppet.com/docs/puppet/latest/release_notes_puppet.html |access-date=2024-05-06}}</ref> 2024-04 8.6.0, 7.17.0 (server)<ref>{{cite web |title=Puppet Server: Release Notes |url=https://puppet.com/docs/puppetserver/latest/release_notes.html |access-date=2024-05-06}}</ref>
|-▼
! {{rh}} | Pyinfra
| [[Python (programming language)|Python]]
| [[MIT License]]
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| ▼
| style="text-align:left;"| 2016-08-10 0.1<ref>{{cite web|url=https://github.com/pyinfra-dev/pyinfra/releases/tag/v0.1 |title=pyinfra v0.1 |website=[[GitHub]] | access-date=2025-02-23}}</ref>
| style="text-align:left;"| 2025-01-30 3.2<ref>{{cite web |url=https://github.com/pyinfra-dev/pyinfra/releases/tag/v3.2 |title=Pyinfra v3.2 |website=[[GitHub]] | access-date=2025-02-23}}</ref>
|-
! {{rh}} | [[Quattor]]
Line 210 ⟶ 223:
| {{yes}}<ref>"Client to server authentication and vice versa: on one hand, this allows to enforce access policies
to sensitive data according to the client "name", on the other hand, clients are guaranteed to talk to
the original server." - from [http://isscvs.cern.ch:8180/cgi-bin/cvsweb.cgi/%7Echeckout%7E/elfms/quattor/documentation/installation-guide/pdf/quattor-install-guide_1_1.pdf?rev=HEAD&content-type=application/pdf&cvsroot=elfms Quattor Installation and User Guide: Version 1.1.x] {{Webarchive|url=https://web.archive.org/web/20130406095526/http://isscvs.cern.ch:8180/cgi-bin/cvsweb.cgi/%7Echeckout%7E/elfms/quattor/documentation/installation-guide/pdf/quattor-install-guide_1_1.pdf?rev=HEAD&content-type=application%2Fpdf&cvsroot=elfms |date=2013-04-06
| {{yes}}<ref>"[...] secure information transfer, since data are encrypted: this prevents eavesdroppers from obtaining information in transit over the network." - from [http://isscvs.cern.ch:8180/cgi-bin/cvsweb.cgi/%7Echeckout%7E/elfms/quattor/documentation/installation-guide/pdf/quattor-install-guide_1_1.pdf?rev=HEAD&content-type=application/pdf&cvsroot=elfms Quattor Installation and User Guide: Version 1.1.x] {{Webarchive|url=https://web.archive.org/web/20130406095526/http://isscvs.cern.ch:8180/cgi-bin/cvsweb.cgi/%7Echeckout%7E/elfms/quattor/documentation/installation-guide/pdf/quattor-install-guide_1_1.pdf?rev=HEAD&content-type=application%2Fpdf&cvsroot=elfms |date=2013-04-06
| {{partial}}<ref>{{Cite web |title=ncm-ncd — Quattor |url=https://quattor-documentation.readthedocs.io/latest/ncm-ncd/ncm-ncd.html#other-options |access-date=2025-02-25 |website=quattor-documentation.readthedocs.io}}</ref>
▲|
| {{no}}
▲|
|
| style="text-align:left;"|2005-04-01<ref>{{cite web |url=http://quattorsw.web.cern.ch/quattorsw/software/quattor/release/ |title=Index of /quattorsw/software/quattor/release |publisher=Quattorsw.web.cern.ch |access-date=2014-02-10 |archive-url=https://web.archive.org/web/20140318090836/http://quattorsw.web.cern.ch/quattorsw/software/quattor/release/ |archive-date=2014-03-18 |url-status=dead
| style="text-align:left;"|
|-
! {{rh}} | [[Radmind]]
| C
| BSD<ref>{{cite web |url=http://rsug.itd.umich.edu/software/copyright.html |title=Research Systems Unix Group: beepage |publisher=Rsug.itd.umich.edu |access-date=2014-02-10 |archive-url=https://web.archive.org/web/20150210155103/http://rsug.itd.umich.edu/software/copyright.html |archive-date=2015-02-10 |url-status=dead
| {{yes}}<ref>''"SSL certificates can also be used to authenticate both the Radmind server and the managed clients, regardless of DNS or IP-address variation."'' - from [http://www.usenix.org/events/lisa03/tech/full_papers/craig/craig_html/index.html Radmind: The Integration of Filesystem Integrity Checking with Filesystem Management]</ref>
| {{yes}}<ref>''"For network security, Radmind supports SSL-encrypted links. This allows nodes on insecure networks to be updated securely.''" - from [http://www.usenix.org/events/lisa03/tech/full_papers/craig/craig_html/index.html Radmind: The Integration of Filesystem Integrity Checking with Filesystem Management]</ref>
Line 226 ⟶ 239:
| {{no}}
|
| style="text-align:left;"|2002-03-26<ref>{{cite web|url=
| style="text-align:left;"|2008-10-08 1.13.0<ref>{{cite web|url=
|-
! {{rh}} | [[Rex (software)|Rex]]
| [[
| [[Apache License|Apache]]
| {{yes}}{{efn|name="Key Pair"}}
Line 241 ⟶ 254:
|-
! {{rh}} | [[Rudder (software)|Rudder]]
| [[C (programming language)|C]], [[Scala (programming language)|Scala]]
| GPLv3
| {{yes}}{{efn|name="Key Pair"}}
| {{yes}}{{efn|name="SSL"}}
Line 286 ⟶ 299:
! {{rh}} | [[STAF]]
| [[C++]]
| [[Common Public License|CPL]]<ref>{{cite web|url=
| {{no}}{{efn|name="Network Trust"|Network Trust: Trusts the network, like rsh.}}{{efn|name="User-only Auth"|User-only Auth: User authenticates to server via password, but uses Network Trust to authenticate user to server, like telnet.}}
| {{partial}}<ref>There is a [
|
| {{no}}
|
| style="text-align:left;"|1998-02-16<ref>{{cite web|url=
| style="text-align:left;"|2012-12-16 3.4.16 <ref>{{cite web|url=
|-
! {{rh}} | Synctool<ref>[http://www.heiho.net/synctool/ Synctool] aims to be easy to understand and use. It is built in Python and uses SSH and Rsync.</ref>
Line 308 ⟶ 321:
! {{rh}} | Uyuni
| Java, Python, [[PL/SQL]] (Perl)
| GPLv2
| {{yes}}
| {{yes}}
Line 314 ⟶ 327:
| Both
| {{yes}}
| style="text-align:left;"| 2018-06<ref name="Uyuni: Forking Spacewalk with Salt and Containers">{{cite web|url=https://news.opensuse.org/2018/05/26/uyuni-forking-spacewalk-with-salt-and-containers/|title=Uyuni: Forking Spacewalk with Salt and Containers|date=26 May 2018
| style="text-align:left;"|
|-
! style="width:12em" |
Line 353 ⟶ 366:
| {{yes}}
| {{yes}}
| {{partial}} {{efn|yes for managed machine; no for managing machine}}
| {{yes}}<ref>{{Citation | url = http://docs.ansible.com/intro_installation.html#control-machine-requirements | title = Installation: Control Machine Requirements|access-date=May 12, 2015}} Can manage any machine with Python 2.4 or later and sshd. Control machine can be any non-Windows machine with Python 2.6 or 2.7 installed. This includes Red Hat, Debian, CentOS, OS X, any of the BSDs, and so on.</ref>
|-
Line 394 ⟶ 407:
| {{yes}}
| {{yes}}<ref>{{Citation | url = https://docs.chef.io/windows.html#install-the-chef-client-on-windows | title = Install the chef-client on Microsoft Windows|access-date=2017-03-15}}</ref>
| {{yes}}
|-
! {{rh}} | Consfigurator
|
| {{partial}}<ref name="consfigurator-portability"></ref>
|
| {{yes}}<ref name="consfigurator-portability">https://spwhitton.name/doc/consfigurator/introduction.html#portability-and-stability {{Bare URL inline|date=August 2025}}</ref>
|
|
| {{no}}<ref name="consfigurator-portability"></ref>
|
|-
! {{rh}} | [[Guix]]
Line 475 ⟶ 498:
| {{yes}}<ref>{{Citation | url = https://puppet.com/blog/puppet-windows-top-questions-2019/ | title = Puppet on Windows: top questions for 2019|access-date=2019-01-15}}</ref>
| {{yes}}
|-
! {{rh}} | Pyinfra
|
| {{yes}}
|
| {{yes}}
| {{yes}}
|
| {{partial}}<ref>{{Citation | url = https://github.com/pyinfra-dev/pyinfra-windows | title = Pyinfra WinRM connector|access-date=2025-02-23}}</ref>
|
|-
! {{rh}} | [[Quattor]]
Line 481 ⟶ 514:
| {{no}}
| {{yes}}
| {{partial}}<ref>{{cite web|url=
| {{yes}}
| {{no}}
Line 551 ⟶ 584:
| {{yes}}{{efn|11.00+ (PA-RISC 32, IA-64)}}
| {{yes}}{{efn|(x86-32, x86-64, IA-64, PPC 64, zSeries 32/64)}}
| {{yes}}<ref>[
| {{yes}}{{efn|2.6+ (Sparc 32); 10+ (x86-32, x86-64)}}
| {{yes}}{{efn|95, 98, Me, NT4, 2000, XP, 2003, Vista (x86-32), 7 (x86-32), 7 (x86-64); 2003, Vista (x86-64); 2004 (IA-64)}}
Line 605 ⟶ 638:
;[[Chef (software)|Chef]]
:Chef is a configuration management tool written in Erlang,<ref>{{cite web|title=Chef Github repository|website=[[GitHub]] |date=21 May 2021|url=https://github.com/chef/chef-server}}</ref> and uses a pure Ruby [[Domain-specific language|DSL]] for writing configuration "recipes". These recipes contain resources that should be put into the declared state. Chef can be used as a client–server tool, or used in "solo" mode.<ref name="alansharp-paul">{{cite web|url=https://www.upguard.com/articles/puppet-vs.-chef-revisited|title=Puppet vs. Chef - The Battle Wages On|author=Alan Sharp-Paul|work=upguard.com}}</ref>
;Consfigurator
:While Debian and derivatives are the best supported distributions, Consfigurator also work on other distributions and various unixes but they have less support for properties for configuring specific aspects of the system. Consfigurator can set properties to be applied in scheme. This requires Consfigurator to be installed on the target computer. A more restricted language is also available which works without needing Consfigurator to be installed on the target. Remote configuration is also supported: the of hosts can be defined with scheme code.
;[[Guix]]
:Guix integrates many things in the same tool (a distribution, package manager, configuration management tool, container environment, etc). To remotely manage systems, it needs the target machines to already run Guix<ref>https://guix.gnu.org/en/manual/en/guix.html#index-machine_002dssh_002dconfiguration {{Bare URL inline|date=August 2025}}</ref> or it can also alternatively deploy configurations inside Digital Ocean Droplet.<ref>https://guix.gnu.org/en/manual/en/guix.html#index-digital_002docean_002dconfiguration {{Bare URL inline|date=August 2025}}</ref>
;[[ISconf]]
:Tool to execute commands and replicate files on all nodes. The nodes do not need 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.
Line 624 ⟶ 662:
;[[Puppet (software)|Puppet]]
:Puppet consists of a custom declarative language to describe system configuration, distributed using the client–server paradigm (using [[XML-RPC]] protocol in older versions, with a recent switch to [[Representational State Transfer|REST]]), and a library to realize the configuration. The resource abstraction layer enables administrators to describe the configuration in high-level terms, such as users, services and packages. Puppet will then ensure the server's state matches the description. There was brief support in Puppet for using a pure Ruby DSL as an alternative configuration language starting at version 2.6.0. However this feature was deprecated beginning with version 3.1.<ref name="upguard.com"/><ref name="alansharp-paul"/><ref name = "Ruby DSL">{{cite web|url=https://puppetlabs.com/blog/ruby-dsl/|title=Puppet & Ruby DSL - Puppet Labs|work=Puppet Labs}}</ref><ref name = "Ruby DSL is Deprecated">{{cite web|url=http://docs.puppetlabs.com/puppet/3/reference/whats_new.html#ruby-dsl-is-deprecated|title=Puppet 3.0 — 3.4 Release Notes|work=puppetlabs.com|access-date=2013-05-23|archive-url=https://web.archive.org/web/20130513170449/http://docs.puppetlabs.com/puppet/3/reference/whats_new.html#ruby-dsl-is-deprecated|archive-date=2013-05-13|url-status=dead}}</ref>
;Pyinfra
:Pyinfra is an agentless server configuration management tool created in Python. Its execution speed is up to 10 times faster than Ansible.<ref>{{cite web|url=https://docs.pyinfra.com/en/3.x/performance.html#performance|title=Performance|access-date=2025-02-23}}</ref> Pyinfra is also excellent for system integration, as it can control SSH connections, Docker, Terraform, Ansible, etc. using a mechanism called a connector. Pyinfra can be run ad hoc or through the API.<ref>{{cite web|url=https://pyinfra.com/|title=Pyinfra|access-date=2025-02-23}}</ref>
;[[Quattor]]
Line 641 ⟶ 682:
;[[Spacewalk (software)|Spacewalk]]
:Spacewalk is an open source Linux and Solaris systems management
;[[Software Testing Automation Framework|STAF]]
:The Software Testing Automation Framework (STAF) enables users to create cross-platform, distributed software test environments. STAF removes the tedium of building an automation infrastructure, thus enabling users to focus on building their automation
;Synctool
|