Puppet is an open source configuration management tool from Puppet Labs, written in Ruby. It is distributed as an open source version under the Apache 2.0 license and as a commercial version called Puppet Enterprise
Puppet is designed to manage the configuration of Unix-like and Microsoft Windows systems declaratively. The user describes system resources and their desired state using Puppet's declarative language. Puppet centrally creates a system-specific catalog containing resources and resource dependencies, which are applied against the target systems. Target systems, called 'agents' report the results of applyig the catalog back to the central server, called the 'master'.
Puppet utilises a number of other software systems, e.g. Facter, Hieran and MCollective.
Puppet works on many Unix systems and most Linux distributions. It also has support for Windows.