What is Puppet?

Puppet is a configuration management system that allows you to define the state of your IT infrastructure, then automatically enforces the correct state. Whether you're managing just a few servers or thousands of physical and virtual machines, Puppet automates tasks that sysadmins often do manually, freeing up time and mental space so sysadmins can work on the projects that deliver greater business value.

Whether you're deploying vendor-supplied applications or working with a team of internal software developers, Puppet automates every step of the software delivery process: from provisioning of physical and virtual machines to orchestration and reporting; from early-stage code development through testing, production release and updates. Puppet ensures consistency, reliability and stability. It also facilitates closer collaboration between sysadmins and developers, enabling more efficient delivery of cleaner, better-designed code.

How Puppet works

Once you install Puppet, every node (physical server, device or virtual machine) in your infrastructure has a Puppet agent installed on it. You'll also have a server designated as the Puppet master. Enforcement takes place during regular Puppet runs, which follow these steps:

  • Fact collection. The Puppet agent on each node sends facts about the node's configuration — detailing the hardware, operating system, package versions and other information — to the Puppet master.
  • Catalog compilation. The Puppet master uses facts provided by the agents to compile detailed data about how each node should be configured — called the catalog — and sends it back to the Puppet agent.
  • Enforcement. The agent makes any needed changes to enforce the node's desired state. Note: If you choose to run in no-op (simulation) mode, the agent will simply simulate the changes.
  • Report. Each Puppet agent sends a report back to the Puppet master, indicating any changes that have been made to its node's configuration. (In no-op mode, reports indicate which nodes are out of compliance.)
  • Report sharing. Puppet's open API can send data to third-party tools, so you can share infrastructure information with other teams.

The Puppet language: a clear platform for collaboration

The Puppet language is declarative, rather than procedural, meaning you tell Puppet what results you want, rather than how to get there. Its language is clear, simple and concise, easy for pretty much anyone to read and understand. This clarity facilitates easier collaboration between sysadmins and colleagues on other teams, such as software developers and software testers.

Choose from thousands of pre-built modules on the Puppet Forge — and build your own!

Don't reinvent the wheel! You'll find more than 2,700 pre-built modules to automate common systems administration tasks, all available for free download from the Puppet Forge, our repository of modules created both here at Puppet Labs and by community members. Puppet modules automate tasks such as:

  • installing and configuring Apache, plus configuring and managing a range of virtual host setups
  • managing APT source, key, and definitions
  • installing, configuring, and running NTP across a range of operating systems
  • managing system reboots on Windows
  • managing and configuring firewalls
  • installing and configuring MySQL
  • and much more.

Modules can be re-used across your infrastructure — physical, virtual and cloud environments — and across operating systems. Combine modules to create complete application configuration stacks that share common configurations. You can create custom modules for your own special requirements, too.

Open source Puppet and Puppet Enterprise

Puppet was first created in 2005 as an open source configuration management tool, and is available for free download under the Apache 2.0 license. Puppet was quickly expanded upon by Puppet Labs and the fast-growing community of Puppet users, and continues to grow as IT admins use it to automate more of their work.

Puppet Enterprise is the commercial product from Puppet Labs, offering a whole set of out-of-the-box capabilities for tackling IT automation challenges that go beyond the configuration management capabilities provided by open source Puppet. Plus, Puppet Enterprise integrates Puppet with 40-plus other open source software projects to create a full, comprehensive platform for IT automation.

» Learn more about Puppet Enterprise and open source Puppet

Learn more