Se você dividir a lógica do MTA em uma classe separada, poderá manipular a lógica ali - e seus recursos podem exigir que a classe MTA imponha o relacionamento de dependência.
node default {
include mta
include foo # class that requries an mta be installed
}
class mta {
if $fqdn in ["mail1.example.org",
"mail2.example.org",
"mail3.example.org"] {
include fullmta # mailhub, and so on
} else {
include ssmtp # really basic send-only mta.
}
}
class foo {
package { foo: ensure => present,
require => Class['mta'], }
... # also a service, and some files, and so on...
}