diff --git a/bundles/icinga2/files/icinga2/groups.conf b/bundles/icinga2/files/icinga2/groups.conf new file mode 100644 index 0000000..4c3ce1e --- /dev/null +++ b/bundles/icinga2/files/icinga2/groups.conf @@ -0,0 +1,7 @@ +% for group in sorted(repo.groups): +object HostGroup "group-${group.name}" { + display_name = "bw group ${group.name}" + + assign where "${group.name}" in host.vars.bw_groups +} +% endfor diff --git a/bundles/icinga2/files/icinga2/hosts.conf b/bundles/icinga2/files/icinga2/hosts.conf index fff4ec9..47b10dd 100644 --- a/bundles/icinga2/files/icinga2/hosts.conf +++ b/bundles/icinga2/files/icinga2/hosts.conf @@ -2,10 +2,13 @@ object Host "${monitored_node.name}" { import "generic-host" - vars.os = "Linux" + address = "${monitored_node.metadata.get('icinga_options', {}).get('hostname', monitored_node.hostname)}" + + vars.os = "${monitored_node.os}" vars.sla = "${monitored_node.metadata.get('sla', '24x7')}" vars.period = "${sla_info[monitored_node.metadata.get('sla', '24x7')]}" - address = "${monitored_node.metadata.get('icinga_options', {}).get('hostname', monitored_node.hostname)}" + vars.location = "${monitored_node.metadata.get('location', 'unknown')}" + vars.bw_groups = [ "${'", "'.join(sorted({group.name for group in monitored_node.groups}))}" ] } % endfor diff --git a/bundles/icinga2/items.py b/bundles/icinga2/items.py index 7063f2a..006eded 100644 --- a/bundles/icinga2/items.py +++ b/bundles/icinga2/items.py @@ -129,6 +129,16 @@ files = { 'svc_systemd:icinga2:restart', }, }, + '/etc/icinga2/conf.d/groups.conf': { + 'source': 'icinga2/groups.conf', + 'content_type': 'mako', + 'needs': { + 'pkg_apt:icinga2', + }, + 'triggers': { + 'svc_systemd:icinga2:restart', + }, + }, '/etc/icinga2/conf.d/templates.conf': { 'source': 'icinga2/templates.conf', 'needs': {