So far in this book, you have primarily done practical things - writing manifests, setting up a master, assigning agents, signing certificates, and so forth. Before you are introduced to the missing language concepts that you will need to use Puppet effectively for bigger projects, there is some background that we should cover. Don't worry, it won't be all dry theory - most of the important parts of Puppet are relevant to your daily business.
The topics of this chapter have been hinted at earlier; Chapter 1, Writing Your First Manifests, contained a brief description of the type and provider. This and some adjacent topics will be thoroughly explored in the sections collecting system information with Facter, understanding the type system, and command execution control with providers.