Show Table of Contents
Chapter 1. Overview
Puppet is a tool for applying and managing system configurations. Puppet collects system information, or facts, and uses this information to create a customized system configuration using a set of modules. These modules contain parameters, conditional arguments, actions, and templates. Puppet is used as either a local system command line tool or in a client-server relationship where the server acts as the Puppet master and applies configuration to multiple client systems using a Puppet agent. This provides a way to automatically configure newly provisioned systems, either individually or simultaneously to create a specific infrastructure.
1.1. Defining the Puppet Workflow
Puppet uses the following workflow to apply configuration to a system.
- Collect facts about each system. These facts can include hardware, operating systems, package versions, and other information. The Puppet agent on each system collects this information and sends it to the Puppet master.
- The Puppet master generates a custom configuration for each system and sends it to the Puppet agent. This custom configuration is called a catalog.
- The Puppet agent applies the configuration to the system.
- The Puppet agent sends a report back to the Puppet master that indicates the changes applied and if any changes were unsuccessful.
- Third-party applications can collect these reports using Puppet's API.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.