These are the building blocks (e.g., puppetlabs-apache ). They handle the "how" but shouldn't contain business-specific data.
This is the "gold standard" for Puppet abstraction. It separates your technology-specific code from your business logic, making your codebase modular and readable. Puppet Best Practices: Design Patterns for Main...
Use Hiera to provide defaults and overrides based on facts like environment or OS. These are the building blocks (e