Puppet is an open-core software configuration management tool. It runs on many Unix-like systems as well as on Microsoft Windows. Its free-software version is released under the Apache License 2.0.
Puppet declaratively manages the configuration of Unix-like and Microsoft Windows systems. The user describes system resources and their state, either using Puppet's declarative language or a Ruby domain-specific language in files called "Puppet manifests". Puppet discovers system information via a utility called Facter, and compiles Puppet manifests into a system-specific catalog containing resources and resource dependencies, which are applied against the target systems. Any actions taken by Puppet are then reported and retained in a database.