Puppet Git Receiver

We’re big fans of Puppet here at Brightbox and have been using it for years to manage the configuration of many hundreds of servers.

puppet-git-receiver is a tool we’ve written that handles validating and applying Puppet manifests via git. It makes configuring a server using Puppet as easy as pushing a git repository to it.

It will use modules added to the git repository or you can have it automatically download modules from Puppet Forge before applying the manifest.

You can also classify your nodes using yaml rather than writing a full manifest (or both!).

It’s no replacement for a proper Puppet master, but it makes managing a small number of nodes very easy. And it can be used to develop and test manifests and modules; just branch from your Puppet master’s git repo and push it to a single node (though there may be some security issues to consider here depending on your set up!)

The code is available on the Brightbox Github account right now. We’re also providing Ubuntu packages on our Launchpad ppa to make it dead easy to start using (Ubuntu Precise only at the moment, more to come though).

If you’re using Brightbox Cloud (or Amazon EC2), you can auto-configure puppet-git-receiver on first boot using our user data interface and Ubuntu’s cloud-init:

$ brightbox-servers create --user-data="#include https://raw.github.com/gist/3129203/puppet-git-receiver-install" img-9h5cv
Creating a nano (typ-4nssg) server with image Ubuntu Precise 12.04 LTS server (img-9h5cv) with 0.10k of user data

 id         status    type  zone   created_on  image_id   cloud_ip_ids  name
-----------------------------------------------------------------------------
 srv-3te8u  creating  nano  gb1-a  2012-08-29  img-9h5cv                    
-----------------------------------------------------------------------------

$ git remote add srv-3te8u puppet-git@ipv6.srv-3te8u.gb1.brightbox.com:puppet.git
$ git push srv-3te8u master

remote: *** Validating puppet manifests for refs/heads/master
remote: *** Applying puppet manifests
remote: notice: /Stage[main]//Package[pwgen]/ensure: ensure changed 'purged' to 'present'
remote: notice: /Stage[main]//Package[zip]/ensure: ensure changed 'purged' to 'present'
remote: notice: /Stage[main]//Package[cowsay]/ensure: ensure changed 'purged' to 'present'
remote: notice: Finished catalog run in 6.50 seconds
remote: *** Puppet manifests applied successfully

A more complete walkthough of getting it running on Brightbox Cloud is available here.

And complete documentation of puppet-git-receiver is available in the README

It’s still quite new but we’ve been using it for a few weeks now and it’s proven very useful. If you need any help using it, try our forums or our irc channel and we’ll give you a leg up.

More Puppet goodness coming to Brightbox Cloud soon!

posted 29 Aug 2012 by John Leach