The roles and profiles pattern became common knowledge in the Puppet community following Craig Dunn's seminal blog post (https://www.craigdunn.org/2012/05/239/), and has been rapidly taken up by the rest of the community. It's now a widely adopted pattern or best practice. It's a reliable way to build reusable, configurable, and refactorable site-wide configuration code, and it's an approach to dealing with the interfaces of your infrastructure—using the software development paradigms of encapsulation and abstraction.
Before the pattern developed, the Puppet language itself provided just two levels of abstraction, as follows:
- The component module (https://puppet.com/docs/puppet/5.3/modules_fundamentals.html)
- The node definition (https://puppet.com/docs/puppet/5.3/lang_node_definitions.html)
But it soon became clear that further intermediate...