Understanding the need for higher abstractions
It took some years in Puppet evolution to achieve the remarkable goal of having good and reusable modules that can be used to install applications quickly and easily and configure them as needed in different contexts.
The Puppet Forge offers quality and variety, and even if I think that many standardization efforts are still needed, both beginners and advanced users can now easily manage most of the applications they need to administer with Puppet.
Still, when it comes to organizing modules and configurations for our infrastructures, documentation, public code, and samples are sparse, given the notable exception of the pattern of roles and profiles.
The main reason is quite obvious. Here is where customizations begin and things get 'local'; here is where we use site modules, ENCs, and/or a bunch of Hiera data to configure our army of servers according to our needs with Puppet.
The concept of application stack is obviously not new; we always have...