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
- 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!
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
- Puppet Language Guide — an older version of the Puppet reference manual’s language reference
- Puppet Manpages — detailed help for each Puppet application
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
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
- Configuring Puppet — use
puppet.confto configure Puppet’s behavior
- Setting Up Puppet — includes server setup & testing
Basic Features and Use
- Puppet Language Guide — all the language details
- Module Fundamentals — nearly all Puppet code should be in modules.
- Installing Modules from the Puppet Forge — save time by using pre-existing modules
- Techniques — common design patterns, tips, and tricks
- Troubleshooting — avoid common problems and confusions
- 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
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.
- Scaling Puppet — general tips & tricks
- Using Multiple Puppet Masters — a guide to deployments with multiple Puppet masters
- Scaling With Passenger — for Puppet 0.24.6 and later
- Scaling With Mongrel — for older versions of Puppet
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
- Publishing Modules on the Puppet Forge — preparing your best modules to go public
Hacking and Extending
Build your own tools and workflows on top of Puppet.
Using the Puppet Data Library
- 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
Using APIs and Interfaces
- HTTP Access Control — secure API access with
- External Nodes — specify what your machines do using external data sources
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
- Running Puppet from Source — preview the leading edge
- Development Life Cycle — learn how to contribute code
- Puppet Internals — understand how Puppet works internally
- Learning Puppet
- Reference Shelf
- Puppet Guides
- Other Resources