Slides from a talk I gave at PuppetConf 2014.
Abstract: Puppet is an incredibly powerful tool, and part of that power is its flexibility. Flexibility often leads to a wide range of ideas on implementation. I've consulted on countless Puppet implementations, and I've seen the entire spectrum, ranging from bat-shit insane to picture perfect. But even the bat-shit insane implementations worked (to a point), and at some point, what seemed bat-shit to me was picture perfect to the folks running it. As I got to understand some of the unique implementations, I started to ask myself: if there's no clear right way to implement Puppet, is there a particularly effective way?
When trying to answer this question I started by looking at the teams who got it right, and a pattern quickly emerged. All of these teams had common behaviors that went far beyond policies and procedures. These behaviors were broadly understood by team members, nearly universally adhered to, and almost second nature. These habits led to more stable, maintainable, and well understood Puppet deployments. In this talk, I'll share with you the behaviors I saw and discuss how you can turn these seemingly obvious best practices into habits amongst your team members.