The baseservices template is just a nagios configuration file with some service checks, so you can definitively add other custom files where you add specific checks for specific roles.
1- I'd provide a custom baseservice template for all the nodes with only checks that are appropriate for all the nodes.
2a- In the role classes (if you have them) I'd add either nagios::process or monitor::* defines that add specific checks for the role
2b- Alternatively to 2a, I'd provide, in the role class, a single custom file with all the Nagios cofnigurations you want to add to that role
Note that this file has to be exported by the node and collected by the Nagios server, so you would need something like (this has been copied from
https://github.com/example42/puppet-nagios/blob/master/manifests/baseservices.pp you will have to change the title and the content:
@@file { "${nagios::target::customconfigdir}/services/${hostname}-00-baseservices.cfg":
ensure => $ensure,
mode => '0644',
owner => 'root',
group => 'root',
notify => Service['nagios'],
content => template( $template ),
tag => "nagios_check_${nagios::target::magic_tag}",
}