diff --git a/manifests/icinga2/agent.pp b/manifests/icinga2/agent.pp index 7ef8651..8ae2aab 100644 --- a/manifests/icinga2/agent.pp +++ b/manifests/icinga2/agent.pp @@ -1,25 +1,49 @@ # Icinga2 agent configuration class profile::icinga2::agent { - $zones = hiera('icinga2::zones') - $endpoints = hiera('icinga2::endpoints') - $accept_config = hiera('icinga2::accept_config') $features = hiera('icinga2::features') + $icinga2_network = hiera('icinga2::network') + $parent_zone = hiera('icinga2::parent_zone') + $parent_endpoints = hiera('icinga2::parent_endpoints') include profile::icinga2::apt_config class {'::icinga2': confd => false, features => $features, } - class { 'icinga2::feature::api': - accept_config => $accept_config, + class { '::icinga2::feature::api': + accept_config => true, accept_commands => true, - endpoints => $endpoints, - zones => $zones, + endpoints => {}, + zones => { + ZoneName => { + endpoints => ['NodeName'], + parent => $parent_zone, + }, + }, + } + + create_resources('::icinga2::object::endpoint', $parent_endpoints) + ::icinga2::object::zone {$parent_zone: + endpoints => $parent_endpoints, + } + + @@::icinga2::object::endpoint {$::fqdn: + target => "/etc/icinga2/zones.d/${::fqdn}.conf", + } + + @@::icinga2::object::zone {$::fqdn: + 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::zone { 'global-templates': global => true, } } diff --git a/manifests/icinga2/master.pp b/manifests/icinga2/master.pp index bbb9dce..5fd9c1f 100644 --- a/manifests/icinga2/master.pp +++ b/manifests/icinga2/master.pp @@ -1,29 +1,44 @@ # An icinga master host class profile::icinga2::master { - $zonename = hiera('icinga2::zonename') - $zones = hiera('icinga2::zones') - $endpoints = hiera('icinga2::endpoints') + $zonename = hiera('icinga2::master::zonename') $features = hiera('icinga2::features') - $accept_config = hiera('icinga2::accept_config') + $icinga2_network = hiera('icinga2::network') include profile::icinga2::apt_config class {'::icinga2': confd => false, features => $features, constants => { 'ZoneName' => $zonename, }, } - class { 'icinga2::feature::api': - accept_config => $accept_config, + class { '::icinga2::feature::api': accept_commands => true, - endpoints => $endpoints, - zones => $zones, + endpoints => {}, + zones => {}, } - icinga2::object::zone { 'global-templates': + @@::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, } }