Chapter 5. Puppetry with Friends

The necessary development environment for testing Puppet manifests can be difficult to maintain even when you’re working alone. What happens when you have a whole archive of classes with dependencies and multiple uses? Some of those classes are bound to be running on production equipment, and several engineers will need to work on features and fixes simultaneously. The need for a lifecycle with development, staging, and production environments quickly becomes urgent.

Environments

Puppet allows you to create environments with different manifest files for modules, nodes, and templates. In order to start using this feature, you’ll need to create a new set of modules, manifests, and templates directories in a subdirectory of /etc/puppet on the Puppet Master and then specify their location in a new stanza in your puppet.conf as follows:

[development]

modulepath = $confdir/environments/development/modules
manifest = $confdir/environments/development/manifests/site.pp
templatedir = $confdir/environments/development/templates

Once you’ve put some usable code in these directories, you can specify the new development for use on an agent node by either passing --environment development to puppetd on invocation, or by placing a new parameter in the agent’s puppet.conf [agent] stanza:

[agent]
  environment = development

Now we can tinker to our heart’s content without risk of breaking production configurations. If you have taken to the practice of keeping your configurations ...

Get Managing Infrastructure with Puppet now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.