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 (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://gist.githubusercontent.com/johnl/3129203/raw/d4b591546f1987803771bbc8c303c62cbca93538/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 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, let us know and we’ll give you a leg up.
More Puppet goodness coming to Brightbox soon!