The Puppet Labs Issue Tracker has Moved:

This issue tracker is now in read-only archive mode and automatic ticket export has been disabled. Redmine users will need to create a new JIRA account to file tickets using See the following page for information on filing tickets with JIRA:

Version 1/23 - Next ยป - Current version
Anonymous, 03/13/2010 08:01 pm

Puppet Documentation


New To Puppet?

Release Notes

References and Advanced Topics

Table of Contents

  1. [[Documentation_Start#IntroductiontoPuppet|Documentation Start]]
  2. [[Documentation_Start#CommandLineExecutables|Documentation Start]]
  3. [[Documentation_Start#TypeandLanguageReference|Documentation Start]]
  4. Documentation Start
  5. Documentation Start
  6. Documentation Start
  7. [[Documentation_Start#RelatedApplications|Documentation Start]]
  8. [[Documentation_Start#AdditionalDocumentation|Documentation Start]]

Introduction to Puppet

Puppet is a declarative language for expressing system configuration, a client and server for distributing it, and a library for realizing the configuration.

The Puppet Introduction covers the basic architecture and design goals, including whether and why you should be using Puppet on your network.

There is an Installation Guide meant for installation of Puppet across a network and a Puppet Best Practice that covers conventions used among the Puppet community. There is also an Release Notes page which details major feature and language changes between versions.

There is also a guide for Puppet Source to get an idea of what you can do without making a full deployment.

Command Line Executables

This section will eventually have links to full man-pages for each executable, but for now the man pages can be found by running the respective executable with the —help flag (this requires the Rdoc::usage module, which is often missing).

However, most arguments for the executables are in the form of configuration parameters used internally in the library. All of the executables are written to accept any of these configuration parameters, and they are all defined in the [[Configuration Reference]] .

  • puppet. Stand alone Puppet Site Manifest Script evaluator. Parses, evaluates, and implements a Site Manifest locally.
  • puppetmasterd. Puppet Site Manifest Server Daemon. Runs on each host serving/providing configurations to Puppet client hosts.
  • puppetd. Puppet Client Host Configuration Daemon. Runs on each host whose configuration is managed by Puppet. Requests a Host Specific Manifest from a Puppet Manifest Server and implements it locally.
  • puppetca. SSL Certificate Authority Server used for receiving cerification requests from puppet clients. Puppet Client Hosts are required to have their SSL certs signed by their Puppet Manifest Server’s Authority before they can be authenticated and authorized to receive configurations.
  • puppetdoc. Command line tool for printing Puppet Default and Local Type Library reference documentation. This is really only used internally.
  • puppetrun. Command line tool for manually triggering Puppet configuration runs.

Type and Language Reference

The Puppet reference is split into the following pieces:

  • Language Tutorial . A tutorial regarding all available language structures within Puppet. This reference presents the limits of and options for expressibility within Puppet.
  • Function Reference
  • Metaparameter Reference
  • Type Reference . A reference of all available Puppet Types. The types defined in this reference represent the total ability of Puppet to manage your system — if an object is not in this reference, then Puppet cannot currently manage it.
  • Report Reference . A reference to all in-built report types.
  • Glossary Of Terms


Puppet configuration can be done through per-process configuration files (e.g., puppetd.conf) or on the command-line via switches. Much of the documentation is available via —help switches on each executable, but most of the useful switches are common to all executables and are thus documented in the [[Configuration Reference]] .

There are some guides already, though:


The Cookbook is a repository of modules, ‘recipes’ as well as Puppet and Facter configuration snippets for achieving common tasks.

Module documentation

Module sets

You can find a number of collections of Puppet modules for a variety of applications and operating systems on the [[Puppet Modules]] page.


Extending Puppet

Puppet is also highly extensible. This section lists additional information that can help you create new types, providers and functions for Puppet. Also documented is the process for adding custom facts for Facter.

  • [[Development_Creating_Custom_Types|Development/Creating Custom Types]] — Creating your own custom types
  • [[Development_Provider_Development|Development/Provider Development]] — Documentation for developing providers
  • Development/Practical Types — A practical example of type development
  • [[Development_Complete_Resource_Example|Development/Complete Resource Example]] — A complete example of a type and provider
  • API Documentation — API documentation
  • Adding Facts — Adding custom facts to Facter
  • Writing Your Own Functions — Extending the Puppet language with your own server-side functions
  • Plugins In Modules — Method for distributing custom plug-ins via modules
  • Recipes/Dsl Hints And Tips — Initial page on how to use Puppet types from plain old Ruby.
  • Development/Writing Tests — Writing RSpec tests for your Puppet contributions.
  • Puppet’s [[Development_Development_Lifecycle|Development/Development Lifecycle]] process

Related Applications

A number of applications that extend, support or supplement Puppet have been developed. These include:

  • PuppetShow — A Rails-application for viewing information about Puppet and configured hosts.
  • The Foreman — A Rails-application for managing server lifecycle.
    integrates with Puppet (external nodes, PuppetCA, inventory and reporting) and provides dynamicly generated with Kickstart / jumpstart and preseed handsfree.
  • Viper — A LDAP-based system for automated hosts installation, configuration and monitoring
  • iClassify — A node management tool for Puppet.
  • PuppetView — A light weight web-based Puppet log viewer written in PHP.
  • Cft — A configuration file tracker that uses Puppet at its base.
  • Augeas — Augeas is a configuration editing tool.
  • Carpet — Carpet is a combination of Puppet and Capistrano.

Additional Documentation

While the above links represent the standard, recommended documentation, there is additional information available for those who are interested.

Also available is Pulling Strings with Puppet – the first book on Puppet written by James Turnbull. Puppet is also mentioned in Chapter 19 (together with provisioning and bootstrapping) of Pro Linux System Administration by James Turnbull, Peter Lieverdink and Dennis Matotek.