This course presents the system management and configuration tool Puppet, from methods and techniques to capabilities and implementation. Each participant will learn how to install the Puppet master and agent (node) applications along with the impact on the Linux system. Class time will primarily be spent learning, writing and applying resource definitions, the key part of Puppet that allows an administrator to synchronize environments easily and uniformly.

Audience: This course is for Linux systems administrators and/or developers looking to automate the provisioning of key areas of a Linux system, such as packages, services, configuration files and distribution of (ssh) keys.
Course Duration: 3 days
Hardware and Software Requirements:

Each participant will need to have a dedicated CentOS 7 virtual server with a Puppet (Enterprise) installation, resource definition writing and application. A second CentOS 7 virtual system will be setup as the Puppet agent. The system will also be used as a stand-alone Puppet configuration (for testing and execution).

Course Objectives:

At the completion of the course, participants should be able to:

  • Install and initially configure Puppet servers and agents
  • Create and modify manifests that contain resource definitions (multiple types)
  • Create and modify classes
  • Create and modify modules
  • Create and modify node definitions
  • Create and modify environments
  • Apply manifests, classes, nodes and environments
  • Extend Puppet with functions
  • Use (and extend) Facter facts
Course Outline:
  • Puppet (Master) Server
    • Overview
    • (Software) installation
    • Installed components
    • Key directories
  • Puppet Agent (Node)
    • Overview
    • (Software) installation
    • Initial setup and interaction with a Puppet (Master) Server
  • Configuration Management Overview
    • Configuration management
    • Puppet configuration management
    • Facter (concepts)
    • Facter installation
    • Facter core (and legacy) facts using Facter information
      • Extending Facter (external and internal facts)
      • Directory locations
      • Ruby defined (facts)
      • Usage with modules
      • Agent defined facts
  • Puppet Resource Definitions and Declarations
    • Overview of resource management
    • Defining configuration resources
    • Checking syntax of configuration resources
    • Puppet style guide
    • Applying configuration resources (locally)
    • Metaparameters
    • Conditionals
    • Arrays of resources
    • Classes
    • Parameterized classes
    • Classes with inheritance (and parameters)
    • Defined resources (definitions)
    • Run stages
    • Modules
    • Virtual resource definitions
    • Puppet standard library functions