Using Puppet From Source

Puppet is currently implemented in Ruby and uses standard Ruby libraries. You should be able to run Puppet on any Unix-style host with Ruby. Windows support is planned but not currently available.

Before you Begin

Make sure your host has Ruby version 1.8.2 or later:

$ ruby -v

and, if you want to run the tests, rake:

$ rake -V

While Puppet should work with 1.8.1, there have been many reports of problems with this version.

Make sure you have Git:

$ git --version

Get the Source

Puppet currently relies on another Reductive Labs tool, Facter. Create a working directory and get them both:

$ SETUP_DIR=~/git
$ mkdir -p $SETUP_DIR
$ cd $SETUP_DIR
$ git clone git://github.com/reductivelabs/facter
$ git clone git://github.com/reductivelabs/puppet

You will need to periodically run:

git pull origin

From your repositories to periodically update your clone to the latest code.

If you want access to all of the tags in the git repositories, so that you can compare releases, for instance, do the following from within the repository:

$ git fetch --tags

Then you can compare two releases with something like this:

$ git diff 0.25.1 0.25.2

Most of the development on puppet is done in branches based either on features or the major revision lines. Currently the “stable” branch is 0.25.x and development is in the “master” branch. You can change to and track branches by using the following:

git checkout --track -b 0.25.x origin/0.25.x

Tell Ruby How to Find It

Last, we need to put the puppet binaries into our path and make the Puppet and Facter libraries available to Ruby:

$ PATH=$PATH:$SETUP_DIR/facter/bin:$SETUP_DIR/puppet/bin:$SETUP_DIR/puppet/sbin
$ RUBYLIB=$SETUP_DIR/facter/lib:$SETUP_DIR/puppet/lib
$ export PATH RUBYLIB

Facter changes far less often than Puppet and it is very minimal (a single library file and a single executable), so it is probably worth just installing it:

$ cd facter
$ sudo ruby ./install.rb