diff --git a/manifests/icinga2/master.pp b/manifests/icinga2/master.pp index c19428f..6d9e028 100644 --- a/manifests/icinga2/master.pp +++ b/manifests/icinga2/master.pp @@ -1,82 +1,82 @@ # An icinga master host class profile::icinga2::master { $zonename = hiera('icinga2::master::zonename') $features = hiera('icinga2::features') $icinga2_network = hiera('icinga2::network') $icinga2_host_vars = hiera_hash('icinga2::host::vars') $icinga2_db_username = hiera('icinga2::master::db::username') $icinga2_db_password = hiera('icinga2::master::db::password') $icinga2_db_database = hiera('icinga2::master::db::database') include profile::icinga2::apt_config include profile::icinga2::objects include ::postgresql::server ::postgresql::server::db {$icinga2_db_database: user => $icinga2_db_username, password => postgresql_password($icinga2_db_username, $icinga2_db_password) } class {'::icinga2': - confd => false, + confd => true, features => $features, constants => { 'ZoneName' => $zonename, }, } class { '::icinga2::feature::api': accept_commands => true, zones => {}, endpoints => {}, } class { '::icinga2::feature::idopgsql': user => $icinga2_db_username, password => $icinga2_db_password, database => $icinga2_db_database, import_schema => true, require => Postgresql::Server::Db[$icinga2_db_database], } @@::icinga2::object::endpoint {$::fqdn: target => "/etc/icinga2/zones.d/${zonename}/${::fqdn}.conf", } @@::icinga2::object::zone {$zonename: endpoints => [$::fqdn], target => "/etc/icinga2/zones.d/${zonename}/${::fqdn}.conf", } @@::icinga2::object::host {$::fqdn: address => ip_for_network($icinga2_network), display_name => $::fqdn, check_command => 'hostalive', vars => $icinga2_host_vars, target => "/etc/icinga2/zones.d/${zonename}/${::fqdn}.conf", } ::Icinga2::Object::Host <<| |>> ::Icinga2::Object::Endpoint <<| |>> ::Icinga2::Object::Zone <<| |>> ::icinga2::object::zone { 'global-templates': global => true, } file {[ '/etc/icinga2/zones.d/global-templates', "/etc/icinga2/zones.d/${zonename}", ]: ensure => directory, owner => 'nagios', group => 'nagios', mode => '0750', tag => 'icinga2::config::file', } } diff --git a/manifests/icinga2/objects.pp b/manifests/icinga2/objects.pp index 6d89e55..86a492d 100644 --- a/manifests/icinga2/objects.pp +++ b/manifests/icinga2/objects.pp @@ -1,32 +1,5 @@ # Icinga2 object definitions class profile::icinga2::objects { - ::icinga2::object::service { 'ping4': - import => ['generic-service'], - apply => true, - check_command => 'ping', - assign => ['host.address'], - target => '/etc/icinga2/zones.d/global-templates/services.conf', - } - - ::icinga2::object::service { 'linux_load': - import => ['generic-service'], - service_name => 'load', - apply => true, - check_command => 'load', - command_endpoint => 'host.name', - assign => ['host.vars.os == Linux'], - ignore => ['host.vars.noagent'], - target => '/etc/icinga2/zones.d/global-templates/services.conf', - } - - ::icinga2::object::service { 'linux_disks': - import => ['generic-service'], - apply => 'disk_name => config in host.vars.disks', - check_command => 'disk', - command_endpoint => 'host.name', - vars => 'vars + config', - assign => ['host.vars.os == Linux'], - ignore => ['host.vars.noagent'], - target => '/etc/icinga2/zones.d/global-templates/services.conf', - } + include profile::icinga2::objects::templates + include profile::icinga2::objects::common_checks } diff --git a/manifests/icinga2/objects.pp b/manifests/icinga2/objects/common_checks.pp similarity index 92% copy from manifests/icinga2/objects.pp copy to manifests/icinga2/objects/common_checks.pp index 6d89e55..fa39b5a 100644 --- a/manifests/icinga2/objects.pp +++ b/manifests/icinga2/objects/common_checks.pp @@ -1,32 +1,32 @@ -# Icinga2 object definitions -class profile::icinga2::objects { +# Icinga2 common check definitions +class profile::icinga2::objects::common_checks { ::icinga2::object::service { 'ping4': import => ['generic-service'], apply => true, check_command => 'ping', assign => ['host.address'], target => '/etc/icinga2/zones.d/global-templates/services.conf', } ::icinga2::object::service { 'linux_load': import => ['generic-service'], service_name => 'load', apply => true, check_command => 'load', command_endpoint => 'host.name', assign => ['host.vars.os == Linux'], ignore => ['host.vars.noagent'], target => '/etc/icinga2/zones.d/global-templates/services.conf', } ::icinga2::object::service { 'linux_disks': import => ['generic-service'], apply => 'disk_name => config in host.vars.disks', check_command => 'disk', command_endpoint => 'host.name', vars => 'vars + config', assign => ['host.vars.os == Linux'], ignore => ['host.vars.noagent'], target => '/etc/icinga2/zones.d/global-templates/services.conf', } } diff --git a/manifests/icinga2/objects/templates.pp b/manifests/icinga2/objects/templates.pp new file mode 100644 index 0000000..581d928 --- /dev/null +++ b/manifests/icinga2/objects/templates.pp @@ -0,0 +1,46 @@ +# Icinga2 object template definitions +class profile::icinga2::objects::templates { + ::icinga2::object::host {'generic-host': + template => true, + max_check_attempts => 3, + check_interval => '1m', + retry_interval => '30s', + check_command => 'hostalive', + target => '/etc/icinga/conf.d/templates.conf', + } + + ::icinga2::object::service {'generic-service': + template => true, + max_check_attempts => 5, + check_interval => '1m', + retry_interval => '30s', + target => '/etc/icinga/conf.d/templates.conf', + } + + ::icinga2::object::user {'generic-user': + template => true, + target => '/etc/icinga/conf.d/templates.conf', + } + + ::icinga2::object::notification {'mail-host-notification': + template => true, + command => 'mail-host-notification', + states => ['Up', 'Down'], + types => ['Problem', 'Acknowledgement', 'Recovery', 'Custom', + 'FlappingStart', 'FlappingEnd', 'DowntimeStart', 'DowntimeEnd', + 'DowntimeRemoved' ], + period => '24x7', + target => '/etc/icinga/conf.d/templates.conf', + } + + ::icinga2::object::notification {'mail-service-notification': + template => true, + command => 'mail-service-notification', + states => ['Ok', 'Warning', 'Critical', 'Unknown' ], + types => ['Problem', 'Acknowledgement', 'Recovery', 'Custom', + 'FlappingStart', 'FlappingEnd', 'DowntimeStart', 'DowntimeEnd', + 'DowntimeRemoved' ], + period => '24x7', + target => '/etc/icinga/conf.d/templates.conf', + } +}