Posts with keyword: puppet


Automatically Building, Configuring, and Maintaining Complex Infrastructure

I've been heads down for the last few weeks getting a project out the door for a new customer. As I mentioned, this involves creating a virtual appliance. I decided, due to the circumstances of this deployment that the best option was the build an appliance factory that is capable of churning out new virtual machines at will. I'm going to describe how I did that in this post. There are bascially three steps to creating a new image that runs the Kynetx Network Service (KNS): Create a new virtual machine Install packages and Perl libraries,
Continue reading {Automatically Building, Configuring, and Maintaining Complex Infrastructure}


A Tail of (Disk) Corruption and Eventual Salvation

Yesterday I accidentally overwrote the disk image of a running Xen server that represented a machine in production. I didn't notice for two hours because the services on the machine kept going since they didn't need the disk. In fact, the only reason I noticed was because I happened to need to do the same thing again and got the command from the shell command history and noticed the mistake--a one character typo. Recovery from this event required rebuilding the machine. Fortunately, we've been working hard on infrastructure automation and have a set of Puppet recipes for completely building
Continue reading {A Tail of (Disk) Corruption and Eventual Salvation}


Infrastructure Automation Increases Operational Efficiency

Last week Jeff Atwood wrote a piece about why throwing hardware at a problem makes sense in some situations. He's careful to avoid the trap of thinking that throwing hardware at a poorly designed program will do more than buy you a little time, but makes a good point: Clearly, hardware is cheap, and programmers are expensive. Whenever you're provided an opportunity to leverage that imbalance, it would be incredibly foolish not to. From Coding Horror: Hardware is Cheap, Programmers are ExpensiveReferenced Sat Dec 27 2008 15:42:36 GMT-0700 (MST) Riffing on that, Gordon Weakliem makes a related and somewhat
Continue reading {Infrastructure Automation Increases Operational Efficiency}


Kynetx Puppet Update

Pat Eyler sent me a note asking if we were still using puppet. In the spirit of trying to leverage my response to him for the widest possible audience, I thought I'd blog the answer. Kynetx has been using Puppet (and a little Capistrano) to automate our infrastructure since this summer. While we haven't gotten everything as automated as we'd like, we're quite a ways down the road and it's making life as a small startup bearable. My ultimate goal is to register a node in the system that delivers Kynetx Network Services (KNS) to the
Continue reading {Kynetx Puppet Update}


Using Puppet and CPAN

The code that makes Kynetx work is a couple of custom Apache modules written in Perl. So, configuring machines via puppet, naturally requires ensuring that a set of Perl modules are loaded. For a long time, I was using a private bundle, but I found that was unreliable. For the most part it worked fine, but then sometimes I'd get an error that Perl couldn't find the bundle, even though it was clearly in the path. I didn't want to spend a lot of time debugging it because I figured it was a dead end. Eventually, I've got to
Continue reading {Using Puppet and CPAN}


Using a Pre-Commit Hook to Check Puppet Syntax

The whole idea of Puppet is to put your machine configuration scripts in a versioned repository. This is good because I've found that a syntax error on a manifest not even used by the current machine will stop the puppet updates from running. One error anywhere kills the whole thing everywhere. So, being able to back out of a change is good. We can go one better however and keep people from checking in files that aren't syntactically correct using the pre-commit hook in SVN. If you don't use SVN, your repository probably has something similar. I followed these
Continue reading {Using a Pre-Commit Hook to Check Puppet Syntax}


Puppet Fun

I'm continuing to explore the use of puppet for managing systems. I'm convinced that it's the best system for managing large groups of interacting servers and keeping them all in sync. For example, today I was trying to figure out why a cronjob that processes log files wasn't working. Turns out that it was a system issue and there was also a problem with mail aliases, so we weren't even finding out. I create a simple puppet recipe for all our machines that simply ensures crond is running. That's basic and now it's ensured on all our machines. This
Continue reading {Puppet Fun}


Velocity 08: Puppet In-Depth and Hands-On

The final talk of the day (hope I make my flight) was by Luke Kanies of Reductive Labs on Puppet. Most automation tools are based on SSH and as a result, they suck. The problem is that the intersection of administrator and developers is very small. Luke wanted Puppet to be so good it was like bringing a gun to a knife fight. The goal: manage lots of machines with very little effort. Luke makes an analogy about the transition from assembly to C and moving from commands and files to "resources." Resources are abstract and portable. Abstraction is
Continue reading {Velocity 08: Puppet In-Depth and Hands-On}