Directories: The Main Manifest(s)
This version of Puppet is not included in Puppet Enterprise. The latest version of PE includes Puppet 4.10. A newer version is available; see the version menu above for details.
Puppet always starts compiling with either a single manifest file or a directory of manifests that get treated like a single file. This main starting point is called the main manifest or site manifest.
For more information on how the site manifest is used in catalog compilation, see the reference page on catalog compilation.
With Puppet Apply
puppet apply command requires a manifest as an argument on the command line. (For example:
puppet apply /etc/puppetlabs/code/environments/production/manifests/site.pp.) It can be a single file or a directory of files.
puppet apply command does not automatically use an environment’s manifest. Instead, it always uses the manifest you pass to it.
With Puppet Master
Puppet master always uses the main manifest set by the current node’s environment. The main manifest can be a single file or a directory of
Any environment that doesn’t set a manifest in its config file will use the
default_manifest setting from puppet.conf. Like the
manifest setting in environment.conf, the value of
default_manifest can be an absolute or relative path. If it’s a relative path, Puppet will resolve it relative to each environment’s main directory.
Since the default value of
./manifests, the default main manifest for an environment is
<ENVIRONMENTS DIRECTORY>/<ENVIRONMENT NAME>/manifests. (For example:
For more details, see:
To check the manifest your Puppet master will use for a given environment, run
puppet config print manifest --section master --environment <ENVIRONMENT>.
Directory Behavior (vs. Single File)
If the main manifest is a directory, Puppet parses every
.pp file in the directory in alphabetical order and evaluate 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 will parse all the files in
Puppet acts as though the whole directory were just one big manifest; for example, a variable assigned in the file
01_all_nodes.pp would be accessible in