## modules/nagios/manifests/init.pp
class nagios {
$nagios_cfgdir = '/etc/nagios3'

include apache

package {
nagios3 :
alias => 'nagios',
ensure => latest;
[ 'nagios3-common', 'nagios-plugins-basic' ]:
ensure => installed,
before => Package['nagios'];
}
service {
'nagios3':
alias => 'nagios',
ensure => running,
hasstatus => true,
hasrestart => true,
}
file {
"$nagios_cfgdir/htpasswd.users":
content => "admin:QqtpoTN5OGzmA",
mode => 0640,
owner => root,
group => www-data,
}

File <<| tag == 'nagios' |>>

define host($ip= $fqdn, $short_alias = $fqdn) {
@@file {
"${nagios_cfgdir}/conf.d/${name}_host.cfg":
ensure => present,
content => template( "nagios/host.erb" ),
mode => 644,
owner => root,
group => root,
tag => 'nagios',
}
}

class target {
debug ( "$fqdn has $nagios_parent as parent" )
nagios::host { $fqdn: }
}
}

## manifests/nodes.pp
node 'monitoring' inherits basenode {
include apache

include nagios

$nagios_parent = "generic-host"
include nagios::target
}

## output of puppetd -t -v
info: Retrieving plugins
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources during transaction: Cannot access mount[plugins]
err: /File[/var/lib/puppet/lib]: Failed to retrieve current state of resource: Cannot access mount[plugins] Could not describe /plugins: Cannot access mount[plugins]
info: Caching catalog at /var/lib/puppet/state/localconfig.yaml
notice: Starting catalog run
err: //Node[monitoring]/nagios::target/Nagios::Host[]/File[/conf.d/_host.cfg]/ensure: change from absent to present failed: Could not set present on ensure: No such file or directory - /conf.d/_host.cfg.puppettmp at /etc/puppet/modules/nagios/manifests/init.pp:40
notice: Finished catalog run in 3.91 seconds