Packt’s Mastering Puppet kicks off with substantial first chapter on how to setup Puppet in a manner that can then scale. The core of this is driven by an explanation of the constituent parts of a Puppet solution and where the workload is. In terms of execution this is as much about understanding the configuration of things like Apache, Passenger and Ningx as it is Puppet. As part of the explanation there are indicative numbers in terms of supportable scale which reflects the knowledge of the product.
Looking at configuration distribution for headless deployments with Git is a solid well considered piece and the writing suggests considers all the needs of a solid deployment of a production quality solution such as access control, whilst supporting collaborative working etc. it would be interesting to have seen how that would have stacked against capabilities such as Zookeeper.
As we move through the chapters the books continues with more advanced themes such as using Hiera as a object hierarchical framework for managing configuration and on into leveraging Puppet forge and various Git repositories (and the challenges when linking to git repositories of the latest code vs a release). With the repositories we can draw in additional tooling and how to incorporate these capabilities into a deployment. This includes looking at several modules that practical experience from the author would recommend.
The next natural step is to look at the reporting aspects of Puppet, orchestration through marionette collective (mCollective). Obviously to report you need to gather the activity information, so the book touches on the out of the box (OOTB) approach and moves onto the idea of using IRC; presentation via Foreman and Puppet Dashboard. Finally then with a reporting view, the next step is to dynamically query the nodes in Puppet environment which uses mcollective to communicate back & forth with the nodes.
So now we have a dynamically configurable set of Nodes, which can report and have dynamic querying against the nodes. Final chapters cover the use of things like PuppetDB, roles & profiles and developing and debugging your puppet environment.
Reading the book, I get the feeling that a fair grasp of Linux system administration would help (i.e. a bit more than the average developer). There are a few useful touches that I think could have been included, such as external references such as man pages for RPM or site for the Pulp tool mentioned. But, as criticisms go, this as much me being too lazy to Google. The only other refinement would be inclusion of some diagrams to support the words. As they say a picture can tell a 1000 words, even if this was to just show the hierarchy or directory structures involved.
Compared to the recently reviewed Puppet Reporting book, this book isn’t for someone starting out with Puppet (but the Packt site says as much). You atleast need to have got some basic understanding or practical exposure to Puppet, and exposure to a development environment is an added bonus. So if you’re setting out with Puppet you might consider starting with the Puppet 3 Beginner’s Guide (Amazon) or Instant Puppet 3 Starter (Amazon). Having got those under your belt, try this book to to really develop the use of Puppet configuration and deployment. When it comes to reporting I’d look at this book along with reporting book (reviewed here). This book feels like more options are on offer, but Puppet Reporting is a lot richer (but you’d expect that given the different book emphasis).
In summary – good solid book, full of practical experience and ideas. But don’t try to use this as a jumpstart to Puppet.
Below are a few links I thought might be helpful as they aren’t in the book:
- YAML – human readable serialization format
- Pulp – software repository management app
- Ruby – Open Source OO programming language
- Foreman – tool capable of extending puppet to deliver PXE capabilities along with capabilities such as reporting
- Splunk – BigData style analytics on log files etc
- Elasticsearch / Logstash / Kibana (ELK) – set of tools to provide analytics against log files
- ActiveMQ – Apache implementation of a JMS compliant messaging solution used my mcollective