In Puppet 4, we changed the locations of a lot of important config files and directories. We also changed Puppet’s packaging to install different things in different places.
This page is a summary, to quickly orient users arriving from Puppet 3.
If you want full details, we’ve written a specification of the directories used by all of Puppet’s tools.
On managed *nix systems, you’ll now install
puppet-agent instead of
puppet. (This package also provides
puppet apply, suitable for standalone Puppet systems.)
This is a new name for a new thing. Instead of using package dependencies to bring in tools like Facter, Hiera, and Ruby, it includes private versions of all of them.
It also includes MCollective.
On Windows, you’ll use the same package as before, but the open source package now includes MCollective.
On *nix platforms, the main executables moved to
/opt/puppetlabs/bin. This means Puppet and related tools aren’t included in your PATH by default. You’ll need to either:
/opt/puppetlabs/binto your PATH
/opt/puppetlabs/bin/puppet applywhen running Puppet commands
On Windows, executables stayed in the same location, and the MSI package still adds Puppet’s tools to the PATH.
The executables in
/opt/puppetlabs/bin are just the “public” applications that make up Puppet. Private supporting commands like
gem are in
/opt/puppetlabs/puppet/bin, to keep them from accidentally overriding system tools if you add the public bin dir to your PATH.
confdir (used by
root and the
puppet user) is now
/etc/puppetlabs/puppet, instead of
/etc/puppet. Open source Puppet now uses the same
confdir as Puppet Enterprise.
confdir is the directory that holds config files like
On Windows, this stayed the same. It’s still in the
COMMON_APPDATA folder, defaulting to
C:\ProgramData\PuppetLabs\puppet\etc on modern Windows versions.
On some Linux distros, our default config used to set Puppet’s
$vardir/ssl rather than
$confdir/ssl. Now we’re not doing that; the default location is in the
confdir on all platforms.
We’re also moving other related configs into the
/etc/puppetlabs directory. Puppet Server now uses
/etc/puppetlabs/puppetserver, and MCollective uses
codedirholds all modules/manifests/data
All of the content used to configure nodes has moved into a new directory, named
codedir. (This stuff used to be in the
codedir location is:
<USER DIRECTORY>/.puppetlabs/etc/codeif you’re running as a non-root user
The main contents of the
Directory environments are always enabled now.
$codedir/environments. On install, we create a directory for the default
This means that if you’re starting from scratch, you should:
You can still put global modules in
$codedir/modules, and can configure a global main manifest with the
Hiera’s default settings now use an environment-specific datadir for the YAML and JSON backends. So the
production environment’s default Hiera data directory would be
puppet agenthas moved, and is now separate from Puppet Server’s
rundir, where the service PID files go, has moved:
/var/run/puppetlabs. (Puppet Server has a
puppetserverdirectory in this directory.)
C:\ProgramData\PuppetLabs\puppet\var\run— this is the same as before, but it’s now outside the main