Designing convenient roles
There are several approaches to building roles, and you must decide which ones are most convenient for you and your team.
High-quality roles strike a balance between readability and maintainability. For most people, the benefit of seeing the entire role in a single file outweighs the maintenance cost of repetition. Later, if you find the repetition burdensome, you can change your approach to reduce it. This might involve combining several similar roles into a more complex role, creating sub-roles that other roles can include, or pushing more complexity into your profiles.
So, begin with granular roles and deviate from them only in small, carefully considered steps.
Here's the basic Jenkins role we're starting with:
class role::jenkins::controller { include profile::base include profile::server include profile::jenkins::controller }
Related information