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.
  1. 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.
  2. The Puppet master generates a custom configuration for each system and sends it to the Puppet agent. This custom configuration is called a catalog.
  3. The Puppet agent applies the configuration to the system.
  4. The Puppet agent sends a report back to the Puppet master that indicates the changes applied and if any changes were unsuccessful.
  5. Third-party applications can collect these reports using Puppet's API.