For about three years now (since basically 15 minutes after Pulling Strings with Puppet was released) James has been asked, “When is the 2nd edition coming out?” This is quickly followed by, “Why is the book so short?” And then the question one never gets sick of: “Why isn’t there an index?”
Well y’all can stop asking—Pro Puppet is here and shipping. This edition is a complete rewrite and extension of the original book. It covers the 2.6.x series of releases and covers a lot more ground than the heavily space-limited Pulling Strings book.
The book includes quite a bit of material. The first two chapters re-introduce the reader to Puppet and provide step-by-step instructions to get a Puppet Master and Agent up and managing some resources. Puppet modules and organizing your code are also covered in these two chapters to help you get things nice and organized from the beginning. Since James is a fairly organized and sane person (and doesn’t separate out his right and left socks within pairs like Jeff does), he wrote these chapters with just the right attention to detail. Chapter 3 builds upon the organizational structure James introduces in the form of modules by covering Puppet environments. The chapter is actually more of a description of a typical dev/test/prod change management workflow with version control underlying the whole process. In Chapter 4, Jeff tackles scalability with Puppet by replacing the out-of-box Puppet Master with a full blown SSL load balancer enabling horizontal scaling by adding as many Puppet Masters as you’d like. If you’re interested in encryption, HTTP load balancing, and scalability then this chapter is definitely for you.
Following the scalability chapter, the rest of the book covers a number of different features of Puppet added since Pulling Strings. First, external node classification, which is really just a fancy term for “pulling in data from anywhere you want” is covered in a great chapter written by James. Next, Jeff covers the ability to exchange resources between Puppet managed nodes in the chapter about how to export resources from one node and collect them on another. If you’ve ever been annoyed by SSH host key warning messages or prompts, read this section. You should never again have to press "enter" before connecting to a host for the first time. Think of the time you’ll save!
Finally, a number of tools external to the core Puppet project are covered in the rest of the book. We cover how to setup and connect the Puppet Dashboard, providing a nice web interface to Puppet and the reports produced by Puppet runs. Other tools covered are the Puppet Forge and Puppet module tool, reports and custom report processors, Cucumber Puppet and the Ruby DSL. One tool in particular, MCollective, works incredibly well in combination with Puppet. It works so well, in fact, that an entire chapter has been dedicated to the subject of integrating MCollective for use with Puppet. If you’ve ever said to yourself, “Boy, I really wish I could make this change to all of those systems _right now_ but I hate having to know their hostnames to SSH into them,” then MCollective is something you should definitely check out in Chapter 11.
So why did it take so long? Well life, mostly, and waiting for the right release to base the book on. Thankfully this book was a collaboration with the awesome Jeff McCune, who unlike the book’s other author, James Turnbull, isn’t a shocking procrastinator. It was largely due to Jeff coming on board and writing half the book that the book got done at all.