PacktLib: Puppet 2.7 Cookbook

Puppet 2.7 Cookbook

Credits

About the Author

About the Reviewers

www.PacktPub.com

Preface

Puppet Infrastructure

Using version control

Using commit hooks

Deploying changes with Rake

Configuring Puppet's file server

Running Puppet from cron

Using autosign

Pre-signing certificates

Retrieving files from Puppet's filebucket

Scaling Puppet using Passenger

Creating decentralized Puppet architecture

Monitoring, Reporting, and Troubleshooting

Generating reports

E-mailing log messages containing specific tags

Creating graphical reports

Producing automatic HTML documentation

Drawing dependency graphs

Testing your Puppet manifests

Doing a dry run

Detecting compilation errors

Understanding Puppet errors

Logging command output

Logging debug messages

Inspecting configuration settings

Using tags

Using run stages

Using environments

Puppet Language and Style

Using community Puppet style

Using modules

Using standard naming conventions

Using embedded Ruby

Writing manifests in pure Ruby

Iterating over multiple items

Writing powerful conditional statements

Using regular expressions in if statements

Using selectors and case statements

Testing whether values are contained in strings

Using regular expression substitutions

Writing Better Manifests

Using arrays of resources

Using define resources

Using dependencies

Using node inheritance

Using class inheritance and overriding

Passing parameters to classes

Writing reusable, cross-platform manifests

Getting information about the environment

Importing dynamic information

Importing data from CSV files

Passing arguments to shell commands

Working with Files and Packages

Making quick edits to config files

Using Augeas to automatically edit config files

Building config files using snippets

Using ERB templates

Using array iteration in templates

Installing packages from a third-party repository

Setting up an APT package repository

Setting up a gem repository

Building packages automatically from source

Comparing package versions

Users and Virtual Resources

Using virtual resources

Managing users with virtual resources

Managing users' SSH access

Managing users' customization files

Efficiently distributing cron jobs

Running a command when a file is updated

Using host resources

Using multiple file sources

Distributing directory trees

Cleaning up old files

Using schedules with resources

Auditing resources

Temporarily disabling resources

Managing timezones

Applications

Managing Apache servers

Creating Apache virtual hosts

 Creating Nginx virtual hosts

Creating MySQL databases and users

Managing Drupal sites

Managing Rails applications

Servers and Cloud Infrastructure

Deploying a Nagios monitoring server

Building high-availability services using Heartbeat

Managing NFS servers and file shares

Using HAProxy to load-balance multiple web servers

Managing firewalls with iptables

Managing EC2 instances

Managing virtual machines with Vagrant

External Tools and the Puppet Ecosystem

Creating custom Facter facts

Executing commands before and after Puppet runs

Generating manifests from shell sessions

Generating manifests from a running system

Using Puppet Dashboard

Using Foreman

Using MCollective

Using public modules

Using an external node classifier

Creating your own resource types

Creating your own providers

Index