Chapter 6. Higher Abstraction Modules
Most of the modules we find on the Puppet Forge have one thing in common: they typically manage a single application (Apache, JBoss, ElasticSearch, MySQL, and so on) or a system's feature (such as networking, users, limits, or sysctl).
A good thing is that a rigorous approach to a single responsibility principle is important in order to have modules that can better interoperate, do just what they are expected to do, and behave like libraries that offer well-identified and atomic services to their users.
Still, our infrastructures are more complex; they require different applications to be configured to work together, where configurations may change according to the number and topology of the other components and some kind of cross-application dependencies have to be followed to fulfill a complete setup.
This is generally managed by Puppet users when they group and organize classes according to their needs. Most of the time, this is done...