Image via Wikipedia
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 machine database (iClassify) and have it come up, configure itself, and be ready to put in production in less than 15 minutes. While there are still a number of manual steps in that process we are remarkably close and getting closer all the time.
I haven't found learning puppet to be difficult. There's plenty of documentation, including recipes that if not usable as is, are great resources for figuring out best practices. Also, there's a very helpful group on IRC (#puppet on irc.freenode.net) that I've turned from time to time.
The best thing about Puppet is that I can count on nodes under puppet management to be consistently configured and the puppet recipes represent an unambiguous record of what should be happening.
A recent example, we needed to ensure that data files from an OEM partner were on all of our initialization servers. I used Puppet in two ways:
- Puppet is used to distribute the data files from the ops server to each of the initialization servers.
- Puppet is used to manage the cron job that grabs updated data from the partner and put it in the right directory for distribution.
If I add another initialization node puppet will make sure it has the right data files just because I declare it to be an initialization node. Nothing else need occur.
I recently released Kynetx's operational procedures. For a small company with no fulltime engineering staff other than me, I think we do a pretty good job operationally. Much of that we owe to Puppet.
Needless to say, I remain, more than ever, a Puppet fan.