What is Puppet?
Puppet is IT automation software that defines and enforces the state of your infrastructure throughout your software development cycle. From provisioning and configuration to orchestration and reporting, from initial code development through production release and updates, Puppet frees sysadmins from writing one-off, fragile scripts and other manual tasks. At the same time, Puppet ensures consistency and dependability across your infrastructure.
With Puppet, repetitive tasks are automated away, so sysadmins can quickly deploy business applications, scaling easily from tens of servers to thousands, both on-premise and in the cloud.
What Puppet Does
Puppet is written in a declarative language, meaning you tell Puppet what results you want, rather than how to get there.
Under the hood, Puppet:
- Defines the desired state of your infrastructure.
- Simulates configuration changes before enforcing them.
- Enforces the desired state automatically, correcting any configuration drift.
- Reports on any differences between the actual state and the desired state, plus any changes that were made to enforce the desired state.
How Puppet Enforces Your Desired State
Once you install Puppet, every node in your infrastructure — that is, machine or device — has a puppet agent installed on it. You’ll also have a server designated as the puppet master server. Enforcement takes place during regular puppet runs, which follow these steps:
- Facts. The puppet agent on each node sends normalized data about the node’s state — called facts — to the puppet master.
- Catalog. The puppet master uses facts to compile detailed data about how the node should be configured — called the catalog — and sends it back to the puppet agent. The puppet agent makes any needed changes to the desired state. The agent can also simply simulate these changes in “no-op” mode.
- Report. Each puppet agent sends a report back to the puppet master, indicating any changes that have been made to the configuration. Reports can be viewed in the Puppet Dashboard.
- Report Collection. Puppet’s open API can send data to third-party tools, so you can share infrastructure info with other teams.
Configure with Reusable Modules
Select from more than 2,000 modules to automate common tasks, all available for free download at 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
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 even create custom modules for your special requirements, using Puppet’s declarative configuration language.
Open Source Puppet and Puppet Enterprise
Puppet was first created as an open-source configuration management platform, and was built quickly into a more comprehensive automation tool by both Puppet Labs and the wider community of Puppet users. For nearly a decade it has helped growing numbers of sysadmins manage their infrastructure efficiently and predictably.
Today, sysadmins and others responsible for managing IT environments — including software developers, quality assurance people and network administrators — can choose Open Source Puppet or Puppet Enterprise.
What’s the difference?
Puppet Enterprise is a rigorously tested, fully supported and continually updated package of technologies that enable full management of IT infrastructure throughout its lifecycle, from provisioning servers right out of the box to shipping high-quality software in the physical data center and the cloud. Puppet Enterprise also supports a number of commonly used Forge modules, integrated and tested by Puppet Labs engineers, and customers can call on our support engineers for help. In other words, with Open Source Puppet, you put the system together yourself; with Puppet Enterprise, we do the legwork for you.
- Get started with Puppet Enterprise
- Review Puppet documentation
- Look for configuration modules in the Puppet Forge