Keep your logic in your profiles and your specific values in your Hiera YAML files. 3. Maintainable Module Design

Use Hiera to provide defaults and overrides based on facts like environment or OS.

3. Coding Practices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Swiss Bay

These are the high-level descriptions of a machine's function (e.g., role::app_server ). A node should ideally have only one role . 2. Separation of Code and Data (Hiera)

This is the "gold standard" for Puppet abstraction. It separates your technology-specific code from your business logic, making your codebase modular and readable.

These wrap component modules to define a specific technology stack (e.g., profile::webserver ). They handle local logic and Hiera lookups.