Home Page Icon
Home Page
Table of Contents for
About the Technical Reviewer
Close
About the Technical Reviewer
by Jeffrey McCune, James Turnbull
Pro Puppet
Copyright
About the Authors
About the Technical Reviewer
Acknowledgments
Introduction
1. Getting Started with Puppet
1.1. What Is Puppet?
1.1.1. Deployment
1.1.2. Configuration Language and Resource Abstraction Layer
1.1.2.1. Configuration Language
1.1.2.2. Resource Abstraction Layer
1.1.3. Transactional Layer
1.2. Selecting the Right Version of Puppet
1.3. Can I mix releases of Puppet?
1.4. Installing Puppet
1.4.1. Installing on Red Hat Enterprise Linux and Fedora
1.4.2. Installing on Debian and Ubuntu
1.4.3. Installing on OpenSolaris
1.4.4. Installing from Source
1.4.5. Installing on Microsoft Windows
1.4.6. Installing on other Platforms
1.5. Configuring Puppet
1.5.1. The site.pp file
1.5.2. Firewall Configuration
1.5.3. Starting the Puppet Master
1.6. Connecting Our First Agent
1.6.1. Completing the Connection
1.7. Creating Our First Configuration
1.7.1. Extending the site.pp file
1.7.2. Agent Configuration
1.8. Creating our first module
1.8.1. Module Structure
1.8.2. The init.pp file
1.9. Applying Our First Configuration
1.10. Summary
1.11. Resources
2. Building Hosts with Puppet
2.1. Getting Started
2.1.1. Installing Puppet
2.1.2. Configuring Nodes
2.1.2.1. Working With Similar Hosts
2.1.2.2. Using External Sources
2.1.2.3. Specifying a Default Node
2.1.2.4. Node Inheritance Structure
2.1.2.4.1. Variable Scoping
2.2. Making (More) Magic With Modules
2.2.1. Version Controlling Your Modules
2.3. Creating a module to Manage SSH
2.3.1. Managing Our Classes
2.3.1.1. The ssh::install Class
2.3.1.2. The ssh::config Class
2.3.1.3. The ssh::service Class
2.4. Creating a Module to Manage Postfix
2.4.1. The postfix::install class
2.4.2. The postfix::config class
2.4.3. The postfix::service class
2.5. Managing MySQL with the mysql Module
2.5.1. The mysql::install class
2.5.2. The mysql::config class
2.5.3. The mysql::service class
2.6. Managing Apache and Websites
2.6.1. The apache::install class
2.6.2. The apache::service class
2.6.3. The Apache definition
2.7. Managing Puppet with the Puppet Module
2.8. Summary
2.9. Resources
3. Working with Environments
3.1. Configuring Puppet Environments
3.1.1. Populating the New Environments
3.1.1.1. Creating a Clone
3.1.2. Making Changes to the Development Environment
3.2. Testing the New Environments with the Puppet Agent
3.3. Environment Branching and Merging
3.3.1. Setting Up a Central Repository
3.3.1.1. Creating a Bare Repository for the Modules
3.3.1.2. Making Individual Changes
3.3.2. Developing a Change Using a Branch
3.3.2.1. Making Changes to the sshd Configuration File
3.3.2.2. Testing the Puppet Agent Against the sshd Configuration File
3.3.2.3. Making Changes to the Postfix Configuration File
3.3.2.4. Testing the Puppet Agent Against the Postfix Configuration File
3.3.3. Merging Changes into a Testing Environment
3.3.3.1. Creating the Testing Branch
3.3.3.2. Merging the Changes into the Development Branch
3.3.3.3. Merging into the Testing Branch
3.3.3.4. Performing Checkout on the Testing Branch
3.3.3.5. Testing the Changes
3.4. Production Environment Releases
3.5. Summary
3.6. Resources
4. Puppet Scalability
4.1. Identifying the Challenges
4.2. Running the Puppet Master with Apache and Passenger
4.2.1. Installing Apache and Passenger on Enterprise Linux
4.2.2. Installing Apache and Passenger on Debian-Based Systems
4.2.3. Installing Passenger Using Ruby Gems
4.2.4. Configuring Apache and Passenger
4.2.5. Testing the Puppet Master in Apache
4.3. Load-Balancing Multiple Puppet Masters
4.3.1. HTTP Load Balancing
4.3.1.1. Puppet Master Worker Configuration
4.3.1.2. Front End Load Balancer Configuration
4.3.1.3. Testing the Load Balancer Configuration
4.3.2. Puppet CA Load Balancing Configuration
4.3.2.1. Puppet CA Worker Configuration
4.3.2.2. Synchronizing the Hot Standby Puppet CA Directory
4.3.2.3. Puppet CA Hot Standby
4.3.2.4. Primary Puppet CA Fail Back
4.4. Measuring Performance
4.4.1. Splay Time
4.5. Summary
4.6. Resources
5. Externalizing Puppet Configuration
5.1. External Node Classification
5.1.1. Configuring Nodes Using An External Node Classifier
5.1.2. An External Node Classifier in a Shell Script
5.1.3. A Ruby External Node Classifier
5.1.4. A Perl External Node Classifier
5.1.5. Back-Ending a Node Classification
5.2. Storing Node Configuration in LDAP
5.2.1. Installing Ruby LDAP Libraries
5.2.2. Setting Up the LDAP Server
5.2.3. Adding the Puppet Schema
5.2.4. Configuring LDAP in Puppet
5.3. Summary
5.4. Resources
6. Exporting and Storing Configuration
6.1. Virtual Resources
6.1.1. Declaring and Realizing a Virtual Resource
6.1.2. Applying the Realize Function
6.1.3. Making Virtual Resources Real
6.1.4. Relationship-Chaining Syntax
6.2. Getting Started with Exported and Stored Configurations
6.2.1. The Stored Configuration Database Server
6.2.1.1. Installing Packages on Enterprise Linux-Based Systems
6.2.1.2. Installing Packages on Debian and Ubuntu
6.2.1.3. Installing Rails Using Gems
6.2.2. Configuring Puppet Master for Stored Configuration
6.2.3. Adding a MySQL Table Index
6.3. Using Exported Resources
6.3.1. Automated SSH Public Host Key Management
6.3.2. Exporting Load Balancer Worker Resources
6.3.3. Automating Nagios Service Checks
6.4. Scaling Stored Configurations
6.4.1. Thin Stored Configurations
6.4.2. Queue Support for Stored Configurations
6.4.3. Installing ActiveMQ on Enterprise Linux-Based Systems
6.4.4. Installing ActiveMQ on Debian-Based Systems
6.4.5. Puppet Master Queue Configuration
6.5. Expiring Stale Resources
6.6. Summary
6.7. Resources
7. Puppet Consoles: Puppet Dashboard and The Foreman
7.1. Puppet Dashboard
7.1.1. Installing Puppet Dashboard
7.1.1.1. Installing the Red Hat Prerequisites
7.1.1.2. Installing the Ubuntu Prerequisites
7.1.1.3. Installing the Dashboard Package
7.1.1.3.1. RPM Packages via Yum
7.1.1.3.2. DEB Packages via APT
7.1.1.3.3. Installing from Source
7.1.2. Configuring the Dashboard
7.1.3. Running Puppet Dashboard
7.1.3.1. Running Puppet Dashboard with Webrick
7.1.3.2. Running Puppet Dashboard with Passenger
7.1.3.2.1. Installing Prerequisite Packages
7.1.3.2.2. Configure an Apache Virtual Host
7.1.4. Integrating Puppet Dashboard
7.1.4.1. Importing Existing Reports
7.1.4.2. Live Report Aggregation
7.1.4.2.1. Puppet 2.6.0 and later
7.1.4.2.2. Puppet 0.25.x and earlier
7.1.4.3. Viewing Reports
7.1.5. External Node Classification
7.1.6. Logging, Database Backup and Performance
7.2. The Foreman
7.2.1. Installing Foreman
7.2.1.1. Installing Foreman via RPM
7.2.1.2. Installing via DEB
7.2.2. Configuring Foreman
7.2.2.1. Configuring Foreman on Red Hat
7.2.2.2. Configuring Foreman on Ubuntu and Debian
7.2.2.3. Managing Foreman's Database
7.2.2.4. Importing Data from Puppet
7.2.3. Starting Foreman
7.2.4. Integrating Foreman's Capabilities
7.2.4.1. Using Foreman as an ENC
7.2.5. Displaying Reports in Foreman
7.2.6. Displaying Nodes Information in Foreman
7.2.7. Using Foreman to trigger Puppet
7.3. Summary
7.4. Resources
8. Tools and Integration
8.1. Puppet Forge and Module Tool
8.1.1. Installing the Puppet Module Tool
8.1.2. Searching and Installing a Module from the Forge
8.1.3. Using a Module
8.1.4. Creating a Module with the Puppet-Module Tool
8.1.4.1. Managing Modules with Git
8.1.4.2. Managing Platform-Specific Resources
8.1.4.3. Building and Testing a Puppet Module
8.1.4.4. Adding Enterprise Linux Support to the NTP Module
8.1.4.5. Releasing the NTP Module to the Forge
8.2. Puppet Ruby DSL
8.2.1. The Problem: Resources from Data
8.2.2. Declaring Resources from Data
8.2.2.1. A Small Puppet Module Using the Ruby DSL
8.2.2.2. Testing the Ruby DSL
8.2.2.3. Account Information from an ENC
8.2.2.4. Accounts Ruby DSL Module
8.2.2.5. Testing the Ruby DSL Accounts Module
8.3. Cucumber Puppet
8.3.1. Installing Cucumber Puppet
8.3.2. Writing a Story
8.3.3. Testing the Basic Catalog Policy
8.3.3.1. Testing the failure case
8.3.4. Validating Specific Resources
8.3.4.1. Adding a Check Step to the Policy
8.3.4.2. Implementing the Cucumber Check
8.3.4.3. Catching Changes in the ENC Data
8.4. Summary
8.5. Resources
9. Reporting with Puppet
9.1. Getting Started
9.2. Configuring Reporting
9.3. Report Processors
9.3.1. log
9.3.2. tagmail
9.3.3. rrdgraph
9.3.4. http
9.4. Custom Reporting
9.5. Summary
9.6. Resources
10. Extending Facter and Puppet
10.1. Writing and Distributing Custom Facts
10.1.1. Configuring Puppet for Custom Facts
10.1.2. Writing Custom Facts
10.1.3. Testing the Facts
10.2. Developing Custom Types, Providers and Functions
10.2.1. Configuring Puppet for Types, Providers and Functions
10.2.2. Writing a Puppet Type and Provider
10.2.2.1. Creating Our Type
10.2.2.2. Creating the Subversion Provider
10.2.2.3. Using Your New Type
10.2.3. Writing a Parsed File Type and Provider
10.2.3.1. The Shells Type
10.2.3.2. The Shells Provider
10.2.4. A More Complex Type and Provider
10.2.4.1. The httpauth Type
10.2.4.2. The httpauth Provider
10.2.5. Testing Types and Providers
10.2.6. Writing Custom Functions
10.3. Summary
10.4. Resources
11. Marionette Collective
11.1. Installing and Configuring RabbitMQ
11.1.1. Installing RabbitMQ on Debian
11.1.2. Installing RabbitMQ on RHEL / CentOS
11.1.3. RabbitMQ Configuration
11.1.4. Installing MCollective on Debian and Ubuntu
11.1.5. Installing MCollective on Enterprise Linux
11.1.6. MCollective Server Configuration
11.2. MCollective Plugins
11.2.1. Puppet Agent MCollective Plugins
11.2.1.1. Downloading the Plugins
11.2.1.2. Installing an MCollective Agent Plugin
11.2.1.3. Loading the Agent Plugin
11.2.1.4. Verifying the Agent Plugin is Loaded
11.2.1.5. Running Puppet from MCollective
11.2.1.6. Listing All Loaded Agent Plugins
11.2.2. The Facter Plugin for MCollective
11.2.3. Additional Plugins
11.3. Addressing Hosts with Metadata
11.4. Summary
11.5. Resources
A. Working with Puppet
A.1. Getting Support and Training
A.2. Resources
A.2.1. Web
A.2.2. Mailing Lists
A.2.3. Puppet Module Forge
A.2.4. Puppet Enterprise
A.2.5. Support (commercial)
A.2.6. Training
A.2.7. IRC
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Prev
Previous Chapter
About the Authors
Next
Next Chapter
Acknowledgments
About the Technical Reviewer
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset