Product SiteDocumentation Site

Configuration Management Using Puppet

Configuration Management Made Easy

Jeroen van Meeuwen, RHCE

Sr. System Engineer
Operator Groep Delft

Stefan Hartsuiker, RHCE

System Engineer
Operator Groep Delft

Legal Notice

Copyright © 2008 Jeroen van Meeuwen. This material may only be distributed subject to the terms and conditions set forth in the Open Publication License, V1.0, (the latest version is presently available at http://www.opencontent.org/openpub/).
Fedora and the Fedora Infinity Design logo are trademarks or registered trademarks of Red Hat, Inc., in the U.S. and other countries.
Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of Red Hat Inc. in the United States and other countries.
All other trademarks and copyrights referred to are the property of their respective owners.
Documentation, as with software itself, may be subject to export control. Read about Fedora Project export controls at http://fedoraproject.org/wiki/Legal/Export.
Abstract
This book is a configuration management workshop wrapped around puppet, the next-generation configuration management utility that has proven to be simple, straightforward, flexible, scalable, stable, fast, extensible and most importantly, truely Free.

Preface
1. About the Contributors
2. About this Document
3. Document Conventions
3.1. Typographic Conventions
3.2. Pull-quote Conventions
3.3. Notes and Warnings
4. Feedback
1. Introduction
1.1. Target Audience
2. Introduction to Configuration Management
2.1. What is Configuration Management?
2.1.1. Configuration Management
2.1.2. Configuration Management Requirements
2.2. Problems without Configuration Management
2.3. Not So Technical Aspects
3. Introduction To Puppet
3.1. What Does Puppet Do?
3.2. Ordering
3.3. Write Once, Apply Many Times
4. How Puppet Works
5. Puppet Features
5.1. Puppet Speaks
5.2. Secure Communication
5.3. Free and Open Source Software
5.4. Facts, not Fiction
5.5. Repeat, Repeat, Repeat
6. Setting Up Puppet
6.1. Installation
6.2. Configuration
6.2.1. Configuring the Puppetmaster
6.2.2. Configuring the SSL Frontend Reverse Proxy Load Balancer
7. Language Tutorial
7.1. Resources
7.1.1. Resource Defaults
7.1.2. Resource Collections
8. How To Use Puppet
8.1. Using Modules
8.2. Environments
8.2.1. Setting Up Environments
8.3. Virtual Resources
8.4. Using Plugins
8.5. Using Manifests from a SCM
8.5.1. Using a Single Tree
8.5.2. Multiple Trees
8.5.3. Modules From Upstream
8.6. Fileserver
8.6.1. Fileserver Operations
9. Troubleshooting Puppet
9.1. Manifests
9.2. The Puppetmaster
9.2.1. Debugging The Puppetmaster
9.3. The Puppet
9.3.1. Debugging The Puppet
10. Other Things To Do With Puppet
10.1. Store Configurations In A Database
10.1.1. SQLite3
10.1.2. MySQL
10.1.3. PostgreSQL
10.2. Tweaking Reporting
10.3. Writing Custom Facts
10.4. Writing Custom Types
10.5. Writing Custom Functions
10.6. Writing Custom Providers
10.7. Storeconfigs, Reporting and Puppetview
11. Best Practices
11.1. Setting $os and $osver
11.2. Using Multiple Sources
11.3. Group Profiles
I. Appendices
A. Puppet Terminology
B. Example SSL Frontend Reverse Proxy Load Balancer Configuration
C. Examples
C.1. Example Defined Type
D. GIT Commit Hooks
E. SVN Commit Hooks
F. Module Conventions
F.1. Code Layout
F.1.1. Indentation
F.2. Sources
F.2.1. Scalability Issues
F.3. Module Tree Layout
F.4. File And Directory Paths
G. Revision History