I just noticed some strange Puppet behaviour. Take a look at this:
class monitoring {
define nrpe_command (
$ensure = present,
$command,
$target = "/etc/nagios/nrpe.d/$title.cfg"
) {
file { $target :
ensure => file,
owner => root,
group => root,
mode => 0755,
content => "command[$title]=$command\n",
}
}
}
class puppet {
monitoring::nrpe_command {"restart_puppet":
command => "/etc/init.d/puppet restart"
}
}
This is the resulting I’ve got:
testhost:/etc/nagios/nrpe.d# ls puppet.cfg testhost:/etc/nagios/nrpe.d# cat puppet.cfg command[restart_puppet]=/usr/local/bin/restart_puppet_safely.sh testhost:/etc/nagios/nrpe.d#
Somehow, puppet eats everything until the last underscore in the $title variable when using it in the file title, but not when using the variable as content for that file.
Any ideas?