diff --git a/manifests/icinga2/master.pp b/manifests/icinga2/master.pp index 51dd66e..4ca0b3b 100644 --- a/manifests/icinga2/master.pp +++ b/manifests/icinga2/master.pp @@ -1,42 +1,43 @@ # An icinga master host class profile::icinga2::master { $zonename = hiera('icinga2::master::zonename') $features = hiera('icinga2::features') $icinga2_network = hiera('icinga2::network') include profile::icinga2::apt_config + include profile::icinga2::objects class {'::icinga2': confd => false, features => $features, constants => { 'ZoneName' => $zonename, }, } class { '::icinga2::feature::api': accept_commands => true, } @@::icinga2::object::endpoint {$::fqdn: target => "/etc/icinga2/zones.d/${::fqdn}.conf", } @@::icinga2::object::zone {$zonename: endpoints => [$::fqdn], target => "/etc/icinga2/zones.d/${::fqdn}.conf", } @@::icinga2::object::host {$::fqdn: address => ip_for_network($icinga2_network), target => "/etc/icinga2/zones.d/${::fqdn}.conf", } ::Icinga2::Object::Host <<| |>> ::Icinga2::Object::Endpoint <<| |>> ::Icinga2::Object::Zone <<| |>> ::icinga2::object::zone { 'global-templates': global => true, } } diff --git a/manifests/icinga2/objects.pp b/manifests/icinga2/objects.pp new file mode 100644 index 0000000..6d89e55 --- /dev/null +++ b/manifests/icinga2/objects.pp @@ -0,0 +1,32 @@ +# 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', + } +}