Puppet is a great tool for automating system administration tasks. But it will transform your way of administrating … by integrating development methods.
It’s a simple gem based an rubigen generators. It provides tools very similar to rails ones : create empty project, rake tasks, manage modules (instead of plugins rails).
Gepetto provides a sandbox support. Because puppet needs to modify a system, sandbox is a small vm which can be created, modified and rebuilt easily. The current gepetto sandbox tasks uses qemu and a embedded debian system (but kvm, vmware and other embedded systems could be supported)
Here are the commented steps and a screencast which explain how to install gepetto, create a puppet project with it and start your development sandbox :
We’re moving the tryphon architecture on a new hosted server. The first step was starting a first xen vm with a puppetmaster instance.
Potamus is a Dedibox XL, a dual core with 3G of RAM and 2x500G sata disks.
Our bootstrap starts from the default dedibox debian install (etch 64bits). The prerequisites for the puppet script are : an upgrade in lenny, the two partitions used by the raid array for lvm and … puppet.
And then ? Let Puppet pulls the strings :
Puppet is a great tool to automatize your system administration tasks.
Many tutorials are available to make your first steps like the official Getting Started with a Simple Puppet Recipe or the (french) Puppet, Administration système centralisée.
But when your puppet configuration becomes a real project, it’s great to see how the other users organize and manage it.
We’ll try to publish our “complete” puppet project because scripts, rake tasks and tests are an important part of a good puppet project.
This project doesn’t contain private information (passwords, certificates, …), these are managed by an unpublished module.
I’ll try to describe, in future posts, these current (and future) tools.