Supondo que cada vez que seu script for executado, ele gerará o arquivo exatamente da mesma maneira para um determinado arquivo de hosts. Você pode fazer um pequeno ajuste.
# generate the file into some arbitrary location, that is not actually referenced by nagios
exec{'regen-nagios-hosts':
command => '/usr/local/bin/generate-nagios-host-definitions-from-hostfile < /etc/hosts > /etc/nagios3/generatedtmpsv-hosts.cfg',
user => 'root',
before => Class['nagios::server'],
require => File['/etc/hosts'],
}
# have a file resource use the generated file to update the production file
# the update will only happen when the checksums have changed
# on update notify the service to restart.
file { '/etc/nagios3/conf.d/sv-hosts.cfg'':
ensure => present,
source => '/etc/nagios3/generatedtmp/sv-hosts.cfg'
require => Exec['regen-nagios-hosts'],
notify => Service['nagios3'],
}
A longo prazo, talvez seja melhor tentar encontrar maneiras de converter seu script em um modelo. Ou encontre alguma outra maneira que se encaixe melhor no modo de fazer as coisas dos fantoches.