Puppet is an indispensable configuration management and Linux automation tool for the system administrator who prefers to spend her time improving the infrastructure, rather than doing tedious manual labour. Chef, Puppet, Fabric and other tools can be a huge boost to productivity. From small beginnings, you can grow your Puppet installation to manage a whole network, or many networks. However, with great power comes a steep learning curve. There are lots of great resources and tutorials available if you want to learn Puppet - here’s a brief guide for aspiring devops.
Need an introduction to Puppet? Start here.
What is Puppet?
- What is Puppet? - introduction to Puppet from Puppet Labs
- The Craft: Automation and Scaling Infrastructure - Andrew Clay Shafer’s thoughtful argument for automation as a way of liberating system administrators to do more important things. “Executable, policy-driven automation doesn’t remove the need for knowledge and skill. Automation allows the knowledge to be invested in infrastructure design, and lets the computers carry out the results of the decisions.”
- Puppet can ease system administration tasks across the network - Ben Martin’s overview and introduction to Puppet for linux.com.
Drupal, Puppet. Puppet, meet Drupal
Puppet and Drupal make a great combination. Drupal is an amazing tool for quickly constructing attractive, functional web sites. It lets you manage large numbers of web sites from a single installation, and (via add-on modules) provides almost any CMS or blog feature you could want.
However, like any powerful tool, Drupal takes some learning. It also needs a certain amount of discipline to manage Drupal servers without getting into a chaotic mess. The Drupal sysadmin can end up trying to navigate a spaghetti of ad-hoc symlinks and face problems upgrading, maintaining, monitoring and backing up a large Drupal installation. Aegir can help with this (I’ll look at Aegir vs. Puppet in a future article) but first we need to get Drupal itself under control.
Fortunately, Puppet can help you tame Drupal and use the power of configuration management to bring your Drupal sites under control. In this article I’ll explain some techniques and Puppet recipes I use to manage Drupal sites and servers, including my own sites, including this one! Read more »
Ever seen this message?
Puppet: could not find dependency group for user 'foo' at...
Puppet lets you specify a dependency between two resources, or to put it another way, that one thing should happen before another. Sometimes, though, the chain of dependencies becomes so complex that you accidentally create a circular dependency, which Puppet doesn’t like.
err: Could not apply complete catalog: Found dependency cycles in the following relationships: Package[ntp] => Service[ntpd], Service[ntpd] => Package[ntp]
When the chain of dependencies is a long one, it can be hard to debug this. I tweeted mournfully that a diagram of the dependencies would be useful:
The vastly knowledgeable @ripienaar and @adamhjk soon put me right: yes, Virginia, you can get Puppet to draw a graph of your resource dependencies. In fact, this was discussed on the Puppet mailing list some time ago. Read more »