Chapter 1,
Puppet Language and Style,
 introduces the Puppet language and shows how to write manifests. The Puppet linting tool, puppet-lint, is introduced, and we review best practices to write Puppet code. Metaparameters are shown with examples. We also cover changes in the Puppet language available in versions 4 and 5 of Puppet.
Chapter 2,
Puppet Infrastructure,
 explains how to deploy Puppet in your environment. It covers the two main methods of installation, centralized and decentralized (masterless). It shows you how to use Git to centrally manage your code. It will help you configure PuppetDB and Hiera.
Chapter 3,
Writing Better Manifests,
 deals with organizing your Puppet manifests. Manifests are used to build modules. This chapter introduces the concept of roles and profiles to abstract how modules are applied to machines. Parameterized classes are introduced. It also shows you how to efficiently define resources with arrays of resources and resource defaults.
Chapter 4,
Working with Files and Packages,
 shows you how to manage files using snippets (fragments). It introduces the power of creating files with both Ruby (ERB) and Puppet (EPP) templates. It also helps you explore ways to secure information stored in your Puppet manifests.
Chapter 5,
Users and Virtual Resources,
 deals with the advanced topic of virtual and exported resources. Virtual resources are a way of defining resources but not applying them by default. Exported resources are similar but are used to have resources from one machine applied to one or more other machines.
Chapter 6,
Managing Resources and Files,
 speaks about dealing with directories and purging resources not controlled by Puppet. It shows you how to have file resources applied differently on different machines. Furthermore, methods for managing host entries in /etc/hosts are shown with exported resources examples.
Chapter 7,
Managing Applications,
 shows you how to use Puppet to manage your deployed applications. Using public Forge modules, it helps you configure Apache, NGINX, and MariaDB.
Chapter 8,
Servers and Cloud Infrastructure,Â
introduces virtual resources and shows how to use them to configure highly available services. It also shows you how to use Puppet to manage Docker and AWS instances. Furthermore, Vagrant is used as a tool to create test environments for your Puppet code.
Chapter 9,
External Tools and the Puppet Ecosystem,
 shows you how to extend Puppet with your own types and providers, how to make your own facts, as well as the Puppet Development Kit (PDK).
Chapter 10,
Monitoring, Reporting, and Troubleshooting,
 shows you how to leverage Puppet to monitor your infrastructure for problems. We configure Puppet reporting and then discuss some of the common problems with Puppet code.