Building roles from profiles
Let's continue with the phpmyadmin
example, which has been built for the sales department so that they can manage their CRM database.
In this case, we build a role for that system based on implementation profiles. The name of the role reflects the business use case:
class role::crm_db_control_panel { contain profile::login::secure contain profile::database::mysql contain profile::scripting::php contain profile::apps::phpmyadmin::db contain profile::apps::phpmyadmin }
Within a role, one only declares profiles. No code logic, no resources, no data lookups. This allows flexible use of roles. Don't try to build almost identical roles, as this will lead to duplicate code. Instead, it would be better to create profiles with data lookups to reflect individual usage.
The previously mentioned role can then be used for a node classification:
node 'dbcrmmgmt.domain.com' { contain role::crm_db_control_panel }
As you can now see, we have a single instance with a single...