You may have read about dynamic environments and be enjoying them already. You can also tune hiera to look in dynamic locations so it’s easy to setup isolated environments in terms of modules and data. One small issue I noticed was that there was still only a single hierarchy despite the multiple environments.
Like anything, there’s a million ways to skin the Puppet cat. I’ve been moving all my RDL code over to Hiera through the magic of hiera_include and my own little addition hiera_declare_types. Things were going great until I realized the single inheritance model is limited in nature. Not only that, but some fellow Puppet folks who are more experienced than I pointed me to the concept of Roles and Profiles in Puppet. I was stumped for a bit, but now I’ve found my way through the maze and want to share my findings.
Being a programmer well versed with inheritance I decided to ignore hiera on an early lap through Puppet. I used the node inheritance instead. It feels natural, and I don’t agree that it fails the principal of least astonishment… Whatever right, I started with node inheritance. So everyone is hyping hiera like crazy and I decide to take a look.