An approach to reusable stack modules
What we have seen until now are more or less standard and mainstream Puppet documentation and usage patterns, and I have surely forgotten valuable alternatives. I may have left traces of personal opinions on some solutions, but they are all common and existing ones; nothing has been invented.
In this section, I'm going to discuss something that is not mainstream, has not been validated in the field, and is definitively a personal idea on a possible approach to higher abstraction modules.
It's not completely new or revolutionary: I'd rather call it evolutionary in the line of established patterns such as parameterized classes, the growing usage of PuppetDB, and roles and profiles, with a particular focus on reusability.
Here, I call 'stack' a module that has classes with parameters, files, and templates, which allows the configuration of a complete application stack, either on a single all-in-one node or on separate nodes.
It is supposed to be used by all...