Just finished reading Pro Puppet and I'm pretty impressed. If I were to summarize in a few short words I'd say this book could have easily been titled "Pro Deployments" as it really covers a whole host of tools that support Puppet and configuration management in general.
I am fairly new to puppet though I have a strong conceptual understanding of configuration management in general. Although puppet may be thought of as a tool to be used for very large environments, it can also be used to good advantage at smaller sites just for the versioning of your configs, and better testing.
For a quick summary of topics I found well covered here's a bullet point list:
o installing puppet, master & agent
o configuring your firewall appropriately
o managing your certificates for puppet
o applying a basic config as proof of concept
o digging in deeper with Puppet's declarative DSL
o using version control (git) with puppet - a big win for any environment
o brief mention of bootstrapping and provisioning - kickstart & preseed
o modules, classes, functions and templates
o building and managing your basic dev, test and production environments
o using a pre-commit hook with your version control system
o scaling puppet with apache & passenger
o adding a load balancer and clustering
o horizontal scaling puppet ca & masters
o external node classifications - allowing a more scalable solution for manifests & configs
o using LDAP for node information
Hitting chapter six really starts digging into some meaty topics including:
o virtualizing your configurations - applying conditionally or "realizing" to certain nodes
o enable queueing for more scalable puppet requests
o in-depth examples to manage ssh keys, nagios configs & load balancers with dynamic node configuration - awesome!
o using sqlite or mysql to store your puppet configs
o using web consoles such as dashboard and foreman
o creating puppet modules (like RPM packages)
o installing existing puppet modules (packages) from the puppet forge
o alternate DSL for puppet with Ruby DSL
o testing your configs without alternate test network - cucumber
o command line & dashboard reporting
o extending the facter database with custom environment variables
After all this material you might be stuck on the idea that Puppet does not operate in real-time. By default it is configured to refresh configs and services on your servers every thirty minutes. Of course you can do so manually, or adjust this parameter, but you may require real-time usage.
Enter Marionette Collective, an imaginative name for an add-on which extends Puppet to provide this more robust functionality.
Pro Puppet certainly introduces a wide range of real-world use-cases to the reader, which make the book very valuable. Using with version control, to manage dev, test and production, and scaling to handle large number of hosts are all key topics. What's more the method of automatically configuring nodes in your load balancer, nagios, or cacti reporting, is just a really great use of this technology.
What I found surprisingly missing though was any mention of using Puppet for provisioning or more specifically cloud deployments. This is I think a topic that everyone is talking about and one that few books are covering. An opportunity perhaps! Along with that, I would have liked to see a comprehensive discussion of different configuration management systems, such as cfengine, and chef, and why Puppet is the best and/or what the pros and cons of each are.
Despite those reservations, the book was excellent. If you've already decided to use puppet in your environment this is a very good volume to get you up to speed!