Puppet Documentation Index
This is the documentation for Puppet, the industry-leading configuration management toolkit. Most of the content here applies equally to Puppet Enterprise and open source releases of Puppet.
Small documents for getting help fast.
- Core Types Cheat Sheet — A double-sided reference to the most common resource types. (HTML version)
- Module Cheat Sheet — A one-page reference to Puppet module layout, covering classes and defined types, files, templates, and plugins. (HTML version)
- Frequently Asked Questions
Learn to use Puppet! New users: start here.
- Part one: Serverless Puppet
- Part two: Master/Agent Puppet
A concise reference to Puppet 3’s usage and internals. Use the left sidebar of any reference manual page to navigate between pages.
A concise reference to Puppet 2.7’s usage and internals. Use the left sidebar of any reference manual page to navigate between pages.
- HTTP API — reference of API-accessible resources
- History of the Puppet Language — a table showing which language features were added and removed in which Puppet versions
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
- Puppet Manpages — detailed help for each Puppet application
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
Learn about different areas of Puppet, fix problems, and design solutions.
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
- Upgrading Puppet — general advice and suggestions for upgrading critical infrastructure
- Configuring Puppet — use
puppet.confto configure Puppet’s behavior
- Setting Up Puppet — includes server setup & testing
Building and Using Modules
- Beginner’s Guide to Modules — Learn what works best when starting to develop a new Puppet module.
- Module Fundamentals — nearly all Puppet code should be in modules.
- Installing Modules from the Puppet Forge — save time by using pre-existing modules
- Module Smoke Testing — write and run basic smoke tests for your modules
- Publishing Modules on the Puppet Forge — preparing your best modules to go public
Help With Writing Puppet Code
- Techniques — common design patterns, tips, and tricks
- Troubleshooting — avoid common problems and confusions
- Style Guide — Puppet community conventions
- Best Practices — use Puppet effectively
- Templating — template out config files using ERB
- Virtual Resources
- Exported Resources — share data between hosts
- Using the Augeas Resource Type — safely edit many types of config files
Using Optional Features
- Environments — separate dev, stage, & production
- Puppet File Serving — Files in modules are automatically served; this guide explains how to configure additional custom mount points for serving large files that shouldn’t be kept in modules.
Puppet on Windows
Manage Windows nodes side by side with your *nix infrastructure, with Puppet 2.7 and higher (including Puppet Enterprise ≥ 2.5).
- Installing Puppet on Windows
- Running Puppet on Windows
- Writing Manifests for Windows
- Troubleshooting Puppet on Windows
- Developers Only: Running Puppet from Source on Windows
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.
- Running a Production-Grade Puppet Master Server With Passenger — This should be one of your earliest steps in scaling out Puppet.
- Scaling Puppet — general tips & tricks
- Using Multiple Puppet Masters — a guide to deployments with multiple Puppet masters
Hacking and Extending: Using Puppet’s Data
- Puppet Data Library: Overview — Puppet automatically gathers reams of data about your infrastructure. Learn where that data is, how to access it, and how to mine it for knowledge.
- Inventory Service — use Puppet’s inventory of nodes at your site in your own custom applications
- Reporting — learn what your nodes are up to
Hacking and Extending: APIs and Interfaces
- HTTP Access Control — secure API access with
- External Nodes — specify what your machines do using external data sources
- LDAP Nodes — a special-case tool for keeping node information in your LDAP directory
Hacking and Extending: 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
- Running Puppet from Source — preview the leading edge
- Development Life Cycle — learn how to contribute code
- Puppet Internals — understand how Puppet works internally
Puppet has gone through some transitional periods, and we’ve occasionally written short guides to explain major changes in its behavior.
- Parameterized Classes — use parameterized classes to write more effective, versatile, and encapsulated code
- Scope and Puppet — understand and banish dynamic lookup warnings with Puppet 2.7
- Scaling With Mongrel — Running production puppet master servers with pre-0.24.6 versions of Puppet