Puppet Labs Documentation
Welcome to the Puppet Labs documentation site. The documentation posted here is also available as a (very large, and frequently updated) PDF, which can be found here.
Puppet Enterprise
For information about Puppet Enterprise 2.0, see the Puppet Enterprise User’s Guide.
Documentation for previous versions of Puppet Enterprise can be found here.
MCollective
For information about MCollective, see the Marionette Collective documentation.
Puppet Dashboard
For information about Puppet Dashboard, see the Puppet Dashboard documentation.
Drive-Thru
Small documents for getting help fast.
Core Types Cheat Sheet — available in single-page flavor (double-sided), extra breathing room flavor (six pages), and plain web page flavor- Frequently Asked Questions
Learning Puppet
Learn to use Puppet! New users: start here.
Part one: Serverless Puppet
- Resources and the RAL — Learn about the fundamental building blocks of system configuration.
- Manifests — Start controlling your system by writing actual Puppet code.
- Ordering — Learn about dependencies and refresh events, manage the relationships between resources, and discover the fundamental Puppet design pattern.
- Variables, Conditionals, and Facts — Make your manifests versatile by reading system information.
- Modules and Classes (Part One) — Start building your manifests into self-contained modules.
- Templates — Use ERB to make your config files as flexible as your Puppet manifests.
- Parameterized Classes (Modules, Part Two) — Learn how to pass parameters to classes and make your modules more adaptable.
- Defined Types — Model repeatable chunks of configuration by grouping basic resources into super-resources.
Part two: Master/Agent Puppet
- Preparing an Agent VM — Prepare your tools for the next few chapters with our step-by-step walkthrough.
- Basic Agent/Master Puppet — Tour the agent/master workflow: sign an agent node’s certificate, pick which classes a node will get, and pull and apply a catalog.
- More coming soon!
Reference Shelf
Curated Guides
Get detailed information about config files, APIs, and the Puppet language.
- REST API — reference of api accessible resources
- Puppet Language Guide — all the language details
- Puppet Manpages — detailed help for each Puppet application
Generated References
Complete and up-to-date references for Puppet’s resource types, functions, metaparameters, configuration options, indirection termini, and reports, served piping hot directly from the source code.
- Resource Types — all default types
- Functions — all built in functions
- Metaparameters — all type-independent resource attributes
- Configuration — all configuration file settings
- Report — all available report handlers
These references are automatically generated from the inline documentation in Puppet’s source code. References generated from each version of Puppet are archived here:
- Versioned References — inline reference docs from Puppet’s past and present
Puppet Guides
Learn about different areas of Puppet, fix problems, and design solutions.
Components
Learn more about major working parts of the Puppet system.
- Puppet commands: master, agent, apply, resource, and more — components of the system
Installing and Configuring
Get Puppet up and running at your site.
- An Introduction to Puppet
- Supported Platforms
- Installing Puppet — from packages, source, or gems
- Configuring Puppet — use
puppet.confto configure Puppet’s behavior - Setting Up Puppet — includes server setup & testing
Tuning and Scaling
Puppet’s default configuration is meant for prototyping and designing a site. Once you’re ready for production deployment, learn how to adjust Puppet for peak performance.
- Scaling Puppet — general tips & tricks
- Scaling With Passenger — for Puppet 0.24.6 and later
- Scaling With Mongrel — for older versions of Puppet
Basic Features and Use
- Techniques — common design patterns, tips, and tricks
- Troubleshooting — avoid common problems and confusions
- Puppet Modules — modules make it easy to organize and share content
- Parameterized Classes — use parameterized classes to write more effective, versatile, and encapsulated code
- Module Smoke Testing — write and run basic smoke tests for your modules
- Scope and Puppet — understand and banish dynamic lookup warnings with Puppet 2.7
- Puppet File Serving — serving files with Puppet
- Style Guide — Puppet community conventions
- Best Practices — use Puppet effectively
Advanced Features
Go beyond basic manifests.
- Templating — template out config files using ERB
- Virtual Resources
- Exported Resources — share data between hosts
- Environments — separate dev, stage, & production
- Reporting — learn what your nodes are up to
- Getting Started With Cloud Provisioner — create and bootstrap new nodes with the experimental cloud provisioner extension
Hacking and Extending
Build your own tools and workflows on top of Puppet.
Using APIs and Interfaces
- REST Access Control — secure API access with
auth.conf - External Nodes — specify what your machines do using external data sources
- Inventory Service — use Puppet’s inventory of nodes at your site in your own custom applications
Using Ruby Plugins
- Plugins In Modules — where to put plugins, how to sync to clients
- Writing Custom Facts
- Writing Custom Functions
- Writing Custom Types & Providers
- Complete Resource Example — more information on custom types & providers
- Provider Development — more about providers
Developing Puppet
- Running Puppet from Source — preview the leading edge
- Development Life Cycle — learn how to contribute code
- Puppet Internals — understand how Puppet works internally
Other Resources
Help Improve This Document
This document belongs to the community and is licensed under the Creative Commons. You can help improve it!

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
To contribute ideas, problems, or suggestions, simply use the Contribute link. If you would like to submit your own content, the process is easy. You can fork the project on github, make changes, and send us a pull request. See the README files in the project for more information.
Documentation Version
This release of the documentation was generated from revision cabbf7b565513bf3eb9cd59ff94fc2f87ae3151e of the puppet-docs repo on January 26, 2012.