Rules for role classes
There are rules for writing role classes.
- The only thing roles should do is declare profile classes
with
include
. Don't declare any component classes or normal resources in a role.Optionally, roles can use conditional logic to decide which profiles to use.
- Roles should not have any class parameters of their own.
- Roles should not set class parameters for any profiles. (Those are all handled by data lookup.)
- The name of a role should be based on your business's conversational name
for the type of node it manages.
This means that if you regularly call a machine a "Jenkins primary server," it makes sense to write a role named
role::jenkins::primaryserver
. But if you call it a "web server," you shouldn't use a name likerole::nginx
— go with something likerole::web
instead.