Chapter 3. Setting Up Puppet
In this section, we are going to set up a puppetmaster, and a puppet client. The puppetmaster is going to run the mongrel server-type, for setting up a puppetmaster for larger environments.
The default server type for the puppetmaster is called webrick, a single-threaded Ruby webserver. The webserver handles the puppets' requests for manifests, certificate exchanges, as well requests for files and templates. Being single-threaded, the webrick webserver can only handle one client at a time. While the puppets poll the puppetmaster with a default interval of 30 minutes, and configuration runs can take longer then 60 seconds, putting more then 25 clients in front of a puppetmaster with a webrick webserver is a very, very bad idea.
There is a multi-threaded webserver in Ruby, called mongrel. This is a simple, multi-threaded, but not very feature-rich webserver. For one, it does not perform SSL. For scalability purposes though, the mongrel server type is an absolute must, and can better be chosen as the webserver to handle the puppets' requests, right from the beginning. This however requires a frontend that performs the SSL part of the communications between the puppetmaster and the puppets. We choose Apache's HTTPd for it's excellent performance, flexible configuration, excellent configuration syntax, and because it can be set up as a reverse proxy load balancer, allowing more then one puppetmaster behind the scenes if necessary.
Install the required packages for the puppetmaster:
# yum install puppet-server
This will pull in the following dependencies:
httpd
rubygem-mongrel
mod_ssl
Optionally also install the requirements for the
storeconfig feature. Choose a database backend that you are familiar with (SQLite3, MySQL or PostgreSQL), and install the necessary software package: