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.
1.2. Using Puppet on Satellite 6
Satellite 6 uses Puppet in several ways:
- Satellite 6 imports Puppet modules used to define the system configuration. This includes control over module versions and their environments.
- Satellite 6 imports sets of parameters, also known as Puppet Smart Class parameters, from Puppet modules. Users can accept the default values from Puppet classes or provide their own at a global or system-specific level.
Satellite 6 triggers the execution of Puppet between the master and the respective agents on each system. Puppet runs can occur either:
- Automatically, such as after the provisioning process completes or as a daemon that checks and manages the machine’s configuration over its life cycle.
- Manually, such as when the administrator needs to trigger an immediate Puppet run.
- Satellite 6 collects reports from Puppet after the configuration workflow completes. This helps with auditing and archiving system configuration over long term periods.
These functions provide an easy way for users to control system configuration aspects of the application life cycle using Puppet.
If required, to find out the version of Puppet used in your Satellite environment, see the Red Hat Knowledgebase article Satellite 6 Component Versions.
1.3. Puppet Performance and Scalability on Satellite 6
The performance of Puppet in Satellite 6 is driven more by the Satellite and Capsule storage capacity, CPU performance, and available memory, than by application limitations. Therefore, testing of your hardware and configuration is the only way to be sure the performance is acceptable for your needs.
For Satellite 6.2, the maximum number of concurrent Puppet runs is approximately 320. This should improve significantly in Satellite 6.3 due to Puppet Server replacing the Apache Passenger module and Puppet master.
Importing many Puppet modules simultaneously can take a long time. For example, on a notebook with 8GB RAM and 4 cores, importing 2000 modules takes approximately 4 minutes.
The following performance brief in the Red Hat Knowledgebase provides examples of performance tests made for Satellite 6.2: Performance & Scale Tuning of Satellite 6.2 and Capsules. The performance of Satellite 6.3 is expected to be noticeably better than indicated in the performance brief for Satellite 6.2.
For information on recommended storage and hardware requirements, see Hardware Requirements in the Red Hat Satellite Installation Guide.