fuel-plugin-lma-infrastruct.../deployment_scripts/puppet/modules/nagios/manifests/init.pp

126 lines
4.5 KiB
Puppet

# Copyright 2015 Mirantis, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Update inline the main nagios configuration
#
class nagios(
$service_name = $nagios::params::nagios_service_name,
$main_config = $nagios::params::main_conf_file,
$use_syslog = true,
$log_rotation_method = $nagios::params::log_rotation_method,
$accept_passive_service_checks = false,
$accept_passive_host_checks = false,
$execute_service_checks = true,
$execute_host_checks = true,
$enable_notifications = true,
$enable_event_handlers = true,
$enable_flap_detection = true,
$debug_level = 0,
$process_performance_data = true,
$check_service_freshness = false,
$service_freshness_check_interval = $nagios::params::service_freshness_check_interval,
$check_host_freshness = false,
$max_concurrent_checks = $nagios::params::max_concurrent_checks,
$host_freshness_check_interval = $nagios::params::host_freshness_check_interval,
$additional_freshness_latency = $nagios::params::additional_freshness_latency,
$check_external_commands = false,
$command_check_interval = $nagios::params::command_check_interval,
$data_dir = $nagios::params::data_dir,
$interval_length = $nagios::params::interval_length,
) inherits nagios::params {
include nagios::params
include nagios::server_service
$config_dir = $nagios::params::config_dir
package { $service_name:
ensure => present,
}
package { $nagios::params::nagios_plugin_package:
ensure => present,
}
$passive_service_check = bool2num($accept_passive_service_checks)
$passive_host_check = bool2num($accept_passive_host_checks)
$service_checks = bool2num($execute_service_checks)
$host_checks = bool2num($execute_host_checks)
$syslog = bool2num($use_syslog)
$notif = bool2num($enable_notifications)
$event = bool2num($enable_event_handlers)
$flap = bool2num($enable_flap_detection)
$perf_data = bool2num($process_performance_data)
$service_freshness = bool2num($check_service_freshness)
$host_freshness = bool2num($check_host_freshness)
$external_command = bool2num($check_external_commands)
$cache_dir = "${data_dir}/cache/"
$object_cache_file = "${cache_dir}/objects.cache"
$status_file = "${cache_dir}/status.dat"
$temp_file = "${cache_dir}/nagios.tmp"
$log_file = "${data_dir}/nagios.log"
$debug_file = "${data_dir}/nagios.debug.log"
$log_archive_path = "${data_dir}/archives"
file { $data_dir:
ensure => directory,
owner => 'nagios',
before => Package[$service_name],
}
file { $cache_dir:
ensure => directory,
owner => 'nagios',
require => File[$data_dir];
}
file { $log_archive_path:
ensure => directory,
owner => 'nagios',
require => File[$data_dir];
}
augeas{ $main_config:
incl => $main_config,
lens => 'nagioscfg.lns',
changes => [
"set interval_length ${interval_length}",
"set accept_passive_service_checks ${passive_service_check}",
"set execute_service_checks ${service_checks}",
"set accept_passive_host_checks ${passive_host_check}",
"set execute_host_checks ${host_checks}",
"set use_syslog ${syslog}",
"set enable_notifications ${notif}",
"set enable_event_handlers ${event}",
"set enable_flap_detection ${flap}",
"set process_performance_data ${perf_data}",
"set debug_level ${debug_level}",
"set check_service_freshness ${service_freshness}",
"set check_host_freshness ${host_freshness}",
"set service_freshness_check_interval ${service_freshness_check_interval}",
"set check_external_commands ${external_command}",
"set command_check_interval ${command_check_interval}",
"set object_cache_file ${object_cache_file}",
"set status_file ${status_file}",
"set temp_file ${temp_file}",
"set log_file ${log_file}",
"set debug_file ${debug_file}",
"set log_archive_path ${log_archive_path}",
],
require => Package[$service_name],
notify => Class['nagios::server_service'],
}
}