define profile::monitoring::local_service ( Optional[Hash] $sudos = {}, Optional[Hash] $common = {}, Optional[Hash] $master = {}, Optional[Hash] $local = {}, ) { $service_description = $title $real_hostname = lookup("base_installation::real_hostname") Nagios_service { ensure => "present", owner => "naemon", group => "naemon", notify => Service["naemon"], before => Service["naemon"], require => File["/etc/naemon"], } $service_generic = { active_checks_enabled => "1", check_freshness => "0", check_interval => "10", check_period => "24x7", contact_groups => "admins", event_handler_enabled => "1", flap_detection_enabled => "1", is_volatile => "0", max_check_attempts => "3", notification_interval => "60", notification_options => "w,u,c,r", notification_period => "24x7", notifications_enabled => "0", obsess_over_service => "1", passive_checks_enabled => "1", process_perf_data => "1", retain_nonstatus_information => "1", retain_status_information => "1", retry_interval => "2", } $service_local = merge($service_generic, { host_name => $real_hostname, check_interval => "5", max_check_attempts => "4", retry_interval => "1", }) $sudos.each |$sudo_name, $content| { ensure_resource("sudo::conf", $sudo_name, { content => $content, before => Nagios_service[$service_description], }) } [true, false].each |$services_for_master| { if $services_for_master { $default_local = { mode => "0644", target => "/etc/naemon/services_for_master.cfg", check_interval => $service_local["check_interval"], retry_interval => $service_local["retry_interval"], host_name => $service_local["host_name"], use => "external-service", notify => [], } $t = "master - " $services_key = $master } else { $default_local = merge($service_local, { target => "/etc/naemon/objects.cfg" }) $t = "" $services_key = $local } $hash = merge($default_local, $common, $services_key) nagios_service { "$t$service_description": service_description => $service_description, * => $hash } } }