Chapter
Chapter 1: Writing Your First Manifests
Introducing resources and properties
Interpreting the output of the puppet apply command
Adding control structures in manifests
Controlling the order of evaluation
Implementing resource interaction
Examining the most notable resource types
Chapter 2: The Master and Its Agents
Setting up the Puppet Agent
Performance considerations
Using Phusion Passenger with Nginx
Completing the stack with PuppetDB
Troubleshooting SSL issues
Chapter 3: A Peek under the Hood – Facts, Types, and Providers
Summarizing systems with Facter
Understanding the type system
Substantiating the model with providers
Chapter 4: Modularizing Manifests with Classes and Defined Types
Introducing classes and defined types
Structured design patterns
Including classes from defined types
Establishing relationships among containers
Making classes more flexible through parameters
Chapter 5: Extending Your Puppet Infrastructure with Modules
An overview of Puppet's modules
Building a specific module
Finding helpful Forge modules
Chapter 6: Leveraging the Full Toolset of the Language
Templating dynamic configuration files
Creating virtual resources
Exporting resources to other agents
Overriding resource parameters
Chapter 7: New Features from Puppet 4
Learning lambdas and functions
Creating Puppet 4 functions
Leveraging the new template engine
Handling multiline with HEREDOC
Chapter 8: Separating Data from Code Using Hiera
Understanding the need for separate data storage
Structuring configuration data in a hierarchy
Retrieving and using Hiera values in manifests
Converting resources to data
Implementing the Roles and Profiles pattern
Chapter 1: Puppet Essentials
Installing and configuring Puppet
Variables, facts, and scopes
Managing order and dependencies
Reserved names and allowed characters
Restoring files from a filebucket
Chapter 2: Managing Puppet
Data with Hiera
Installing and configuring Hiera
Working with the command line on a YAML backend
Additional Hiera backends
Chapter 3: Introducing PuppetDB
Installation and configuration
Querying PuppetDB for fun and profit
How Puppet code may change in the future
Chapter 4: Designing Puppet Architectures
Components of a Puppet architecture
Chapter 5: Using and Writing
Reusable Modules
Chapter 6: Higher Abstraction Modules
An approach to reusable stack modules
Chapter 7: Puppet Migration Patterns
Examining potential scenarios and approaches
Patterns for extending Puppet coverage
Chapter 8: Code Workflow Management
Propagating Puppet changes
Puppet continuous integration
Chapter 9: Scaling Puppet Infrastructures
Chapter 10: Extending Puppet
Anatomy of a Puppet run, under the hood
Puppet extension alternatives
Custom types and providers
Chapter 11: Beyond the System
Puppet on network equipment
Puppet for cloud and virtualization
Puppet on storage devices
Chapter 12: Future Puppet
Changing the serialization format
Chapter 1: Dealing with Load/Scale
Chapter 2: Organizing Your Nodes
and Data
Organizing the nodes with an ENC
Chapter 3: Git and Environments
Chapter 4: Public Modules
Using GitHub for public modules
Using Puppet-supported modules
Chapter 5: Custom Facts and Modules
Chapter 7: Reporting and Orchestration
Chapter 8: Exported Resources
Configuring PuppetDB – using the Forge module
Manually installing PuppetDB
Exported resource concepts
Chapter 9: Roles and Profiles
Creating an example CDN role
Chapter 10: Troubleshooting