Puppet Platform reference manual

A quick reference to Puppet module terms and concepts.

For detailed explanations of Puppet modules, see the related topics about modules.

Related topics:

Example Module: /etc/puppetlabs/puppet/modules/apache


This directory holds the module’s Puppet code.

  • Each .pp file should contain one and only one class or defined type.
  • Filenames and class/defined type names are related; see the examples below.
  • Within a module, the special $module_name variable always contains the module’s name.


class apache {

init.pp is special; it should contain a class (or defined type) with the same name as the module.


define apache::vhost 
($port, $docroot) 

Other classes (and defined types) should be named modulename::filename (without the .pp extension).


class apache::config::ssl {

Subdirectories add intermediate namespaces.


Nodes can download any files in this directory from Puppet’s built-in file server.

  • Use the source attribute to download file contents from the server.
  • Use puppet:/// URIs to specify which file to fetch.
  • Files in this directory are served at puppet:///modules/modulename/ filename.


To fetch this file:

file {'/etc/apache2/httpd.conf':
  ensure => file,
  source => 'puppet:///modules/apache/httpd.conf',


Puppet’s file server can navigate any subdirectories:

file {'/etc/apache2/httpd-ssl.conf':
  ensure => file,
  source => 'puppet:///modules/apache/extra/ssl',


This directory holds Ruby plugins, which can add features to Puppet and Facter.

Capache/lib/puppet/type/apache_setting.rb** A custom type.

apache/lib/puppet/parser/functions/htpasswd.rb A custom function.

apache/lib/facter/apache_confdir.rb** A custom fact.


This directory holds ERB templates.

  • Use the template function to create a string by rendering a template.
  • Use the content attribute to fill file contents with a string.
  • Template files are referenced as modulename/filename.erb.


To use this template:

file     {'/etc/apache2/sites-enabled/wordpress.conf':
  ensure => file,
  content => template('apache/vhost.erb'),
Back to top
The page rank or the 1 our of 5 rating a user has given the page.
The email address of the user submitting feedback.
The URL of the page being ranked/rated.