Main manifest directory
Puppet starts compiling a catalog either with a single manifest file or with a directory of manifests that are treated like a single file. This starting point is called the main manifest or site manifest.
For more information about how the site manifest is used in catalog compilation, see Catalog compilation.
Specifying the manifest for Puppet apply
puppet apply command uses the manifest you pass to it
as an argument on the command line:
puppet apply /etc/puppetlabs/code/environments/production/manifests/site.pp
You can pass Puppet apply either a single
.pp file or a
.pp files. Puppet apply uses the manifest you
pass it, not an environment's manifest.
Specifying the manifest for primary Puppet server
The primary Puppet server uses the main manifest set by the
current node's environment, whether that
manifest is a single file or a directory of
By default, the main manifest for an environment is
<ENVIRONMENTS DIRECTORY>/<ENVIRONMENT>/manifests, for example
You can configure the manifest per-environment, and you can also configure the default for
To determine its main manifest, an environment uses the
manifest setting in
environment.conf. This can be
an absolute path or a path relative to the environment’s main directory.
manifest setting is absent, it uses the value of the default_manifest setting from the
puppet.conf file. The
./manifests. Similar to the environment's
manifest setting, the value of
default_manifest can be an absolute path or a path relative to the environment’s
To force all environments to ignore their own
setting and use the
default_manifest setting instead, set
disable_per_environment_manifest = true in
puppet config print manifest --section server --environment <ENVIRONMENT>
For more information, see Creating environments, and Checking values of configuration settings.
Manifest directory behavior
When the main manifest is a directory, Puppet parses every
.pp file in the directory in alphabetical order and
evaluates the combined manifest. It descends into all subdirectories of the manifest
directory and loads files in depth-first order. For example, if the manifest directory
contains a directory named
01, and a file named
02.pp, it parses the files in
01 before it parses
Puppet treats the directory as one manifest, so, for
example, a variable assigned in the file
01_all_nodes.pp is accessible in
manifestsetting refers to a directory.