Following are the key components of Puppet:
Let's understand these components in detail:
Puppet Master contains the Puppet Slave's configuration details, and these are written in Puppet's native language.
Manifest is nothing but the files specifying the configuration details for Puppet slave. The extension for manifest files is .pp, which means Puppet Policy. These files consist of puppet scripts describing the configuration for the slave.
The puppet module is a set of manifests and data. Here data is file, facts, or templates. The module follows a specific directory structure. These modules allow the puppet program to split into multiple manifests. Modules are simply self-contained bundles of data or code.
Let's understand the module by the following image:
Resources are a basic unit of system configuration modeling. These are the predefined functions that run at the backend to perform the necessary operations in the puppet.
Each puppet resource defines certain elements of the system, such as some particular service or package.
The factor collects facts or important information about the puppet slave. Facts are the key-value data pair. It contains information about the node or the master machine. It represents a puppet client states such as operating system, network interface, IP address, uptime, and whether the client machine is virtual or not.
These facts are used for determining the present state of any agent. Changes on any target machine are made based on facts. Puppet's facts are predefined and customized.
M-collective is a framework that enables parallel execution of several jobs on multiple Slaves. This framework performs several functions, such as:
The entire configuration and manifest files that are written in Puppet are changed into a compiled format. This compiled format is known as a catalog, and then we can apply this catalog to the target machine.
All the required states of slave resources are described in the catalog.
Like other programming languages, the puppet also supports a class to organize the code in a better way. Puppet class is a collection of various resources that are grouped into a single unit.
The nodes are the location where the puppet slaves are installed used to manage all the clients and servers.