Puppet Manifests

Puppet uses a declarative Domain Specific Language (DSL) that is similar to Ruby to define states. Puppet records configuration specifications in files called manifests, which use a .pp file extension and are located on the Puppet Server. Manifests declare resources that define various aspects of a system, such as files, software packages, and services. Resources are grouped into classes, which expose parameters that can affect resource behavior. Classes and configuration files are organized into modules. See the Puppet Glossary and the Puppet language Resources.

Use the Puppet site.pp manifest to define a global configuration that applies to all of the managed nodes that run the Puppet Agent. A site manifest can include node-specific code. A node definition, or node statement, is a block of Puppet code that is included only in the catalogs of the nodes named after the node keyword. This feature enables you to assign specific configurations to specific nodes. See the Puppet language Node definitions.

A manifest can group several resources together into a class that you can use to apply resources to specific nodes. A Puppet class can include resources, variables, and additional advanced attributes. When you assign a class to a node, that node gets all of the configurations that are part of that class. Include class declarations in a manifest as described in Writing Puppet Classes and Writing Puppet Manifests, Classes, and Modules in Oracle Solaris.

Puppet modules are self-contained collections of files and directories that can contain Puppet manifests and other objects, including files and templates. Puppet uses modules to find the classes and types that can be used for configuration management within your IT infrastructure. Puppet loads classes and defined types that are stored in modules. Declare these classes and types by name in a manifest as described in Writing Puppet Modules.