Responda à meta questão de como você faz isso funcionar. Se você estiver usando o Passenger para executar o seu mestre de marionetes, o que você deve fazer se tiver um sistema de qualquer tamanho, há uma solução simples para a loucura que é o módulo puppetlabs. Você simplesmente solta um novo arquivo chamado /etc/puppet/puppetmaster.conf e talvez alguns outros bits de configuração em um novo módulo chamado puppetmaster e também adiciona essa linha ao config.ru
ARGV << "--config=/etc/puppet/puppetmaster.conf"
Você pode usar um pouco da lógica dentro do módulo puppetlabs, mas pode ser mais simples simplesmente enviar um arquivo ou um modelo menos complexo se você não se importar em ter cada bit de configuração como parâmetro. Em seguida, inclua o puppetmaster nos nós que são mestres e você está pronto. Você também pode modificar os puppetlabs existentes para fazer o acima.
Enfrentando a pergunta original, Hiera pode ser a solução mais simples. Use isso no init.pp
$master = hiera('puppet_master','false'),
e, em seguida, defina puppet_master: true para as máquinas que precisam dele. Pessoalmente, minha preferência é pelo primeiro método.