Table of Contents

Determining Correct File Placement for Puppet

Some guides instruct the user to create a directory at /etc/puppet/manifests and to place .pp files in that directory. However, doing so results in a non-working puppet install since, by default, puppet has defined defaults.

The correct way is to determine the defaults and work with them. With Puppet installed, issue for instance:

puppet config print | grep manifest

and, at least on Debian, the output will be along the lines of:

default_manifest = ./manifests
disable_per_environment_manifest = false
genmanifest = false
manifest = /etc/puppet/code/environments/production/manifests
ordering = manifest

which means that .pp files should be placed in /etc/puppet/code/environments/production/manifests.

It is possible to edit /etc/puppet/puppet.conf and change the defaults, however doing so comes at the cost of maintainability as well as possible incompatibility with the distribution defaults.

Extremely Quick Setup Guide for a Master and an Agent

Using Embedded Ruby to Conditionally Set Template Parameters

As an example, assuming that a server is a dedicated seedbox machine, one would like to switch the TCP congestion protocol to lb over htcp or others. The following ERB template branches on the server FQDN and sets the TCP congestion protocol:

<% if @fqdn == "media.home" %>
net.ipv4.tcp_congestion_control=lp
<% else %>
net.ipv4.tcp_congestion_control=htcp
<% end %>