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 ...