From 35e1648d1a33c7f0c43a272e18824edd5a9caf26 Mon Sep 17 00:00:00 2001 From: Reto Gantenbein Date: Tue, 14 Feb 2017 07:24:14 +0100 Subject: [PATCH 1/6] Add rule for setting 'notification_fallback_email' --- defaults/main.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/defaults/main.yml b/defaults/main.yml index fb15b7f..3837f36 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -486,6 +486,7 @@ checkmk_server__site_config_map: '{{ checkmk_server__site_cfg_contactgroups + checkmk_server__site_cfg_servicegroups + checkmk_server__site_cfg_datasource_programs + checkmk_server__site_cfg_netif_description + + checkmk_server__site_cfg_notification_defaults + checkmk_server__site_cfg_software_inventory }}' @@ -591,6 +592,20 @@ checkmk_server__site_cfg_software_inventory: else "absent" }}' +# .. envvar:: checkmk_server__site_cfg_notification_defaults +# +# Set fallback email address for rule based notifications. Must be set +# including domain otherwise it won't be accepted by Check_MK. +checkmk_server__site_cfg_notification_defaults: + - name: 'notification_fallback_email' + filename: 'global.mk' + template: 'key_value' + value: '{{ ansible_local.core.admin_public_email[0] + if ("core" in ansible_local) and + ("admin_public_email" in ansible_local.core) + else "root@" + ansible_domain }}' + + # .. envvar:: checkmk_server__site_cfg_netif_description # # Set interface name instead of index for network interface check via From d270b416595436db3e0ee180ab1661e8b015bd8c Mon Sep 17 00:00:00 2001 From: Reto Gantenbein Date: Tue, 14 Feb 2017 20:31:10 +0100 Subject: [PATCH 2/6] Properly quote values if string --- templates/macros/checkmk_config.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/macros/checkmk_config.j2 b/templates/macros/checkmk_config.j2 index 2ddc51c..38d7f57 100644 --- a/templates/macros/checkmk_config.j2 +++ b/templates/macros/checkmk_config.j2 @@ -120,7 +120,7 @@ {% macro tmpl_var__key_value(_name, _value) %} -{{ _name }} = {{ _value }} +{{ _name }} = {{ "'" + _value + "'" if (_value is string) else _value }} {% endmacro %} From fddd1f8d8122c38a8863fbb6ae15e12835fe222d Mon Sep 17 00:00:00 2001 From: Reto Gantenbein Date: Tue, 14 Feb 2017 20:51:23 +0100 Subject: [PATCH 3/6] Values must be 'str' else 'inventory_processes_rules' will fail --- templates/macros/checkmk_config.j2 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/macros/checkmk_config.j2 b/templates/macros/checkmk_config.j2 index 38d7f57..9d1f108 100644 --- a/templates/macros/checkmk_config.j2 +++ b/templates/macros/checkmk_config.j2 @@ -305,11 +305,12 @@ if {{ _name }} == None: {% set _rule = "'" + _value + "'" %} {% elif (_value is mapping) or (_value is sequence) %} {# - # Remove unicode hints for dictionary keys. + # Remove unicode hints for dictionary keys and values. # Substitute lists with tuples: ['foo', 'bar'] -> ('foo', 'bar') # Fix nested lists: ({'foo': (bar)}) -> ('foo', ('bar')) #} {% set _rule = _value | regex_replace("(, |{)u'", "\\1'") | + regex_replace(": u'", ": '") | replace("[", "(") | replace("]", ")") | regex_replace("\({('[\w]+'):", "(\\1,") | replace(")})", "))") %} {% else %} From 9f448d2c97b3c1adba868e0c75ed2a3c1bf1199c Mon Sep 17 00:00:00 2001 From: Reto Gantenbein Date: Tue, 14 Feb 2017 20:52:24 +0100 Subject: [PATCH 4/6] Add test/reference for 'custom_checks' configuration --- tests/reference.mk | 5 +++++ tests/test_templates.yml | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/tests/reference.mk b/tests/reference.mk index 4d88eea..02c6687 100644 --- a/tests/reference.mk +++ b/tests/reference.mk @@ -85,3 +85,8 @@ checkgroup_parameters.setdefault('threads', []) checkgroup_parameters['threads'] = [ ( (4000, 8000), ['physical', ], ALL_HOSTS, {'description': u'Physical servers need to handle a lot of threads'} ), ] + checkgroup_parameters['threads'] + + +custom_checks = [ + ( {'service_description': u'Galera Cluster', 'command_line': '$USER1$/check_by_ssh -t 60 -E -H $HOSTADDRESS$ -C "sudo /usr/lib64/nagios/plugins/check_galera_cluster -c 1"'}, [], ['mysql01.example.com', 'mysql02.example.com'] ), +] diff --git a/tests/test_templates.yml b/tests/test_templates.yml index e719a7c..74b451a 100644 --- a/tests/test_templates.yml +++ b/tests/test_templates.yml @@ -123,6 +123,16 @@ value: [ 4000, 8000 ] tags: [ 'physical' ] description: 'Physical servers need to handle a lot of threads' + # custom_checks + - name: 'custom_checks' + filename: 'rules.mk' + template: 'rule' + value: + service_description: 'Galera Cluster' + command_line: '$USER1$/check_by_ssh -t 60 -E -H $HOSTADDRESS$ -C "sudo /usr/lib64/nagios/plugins/check_galera_cluster -c 1"' + hosts: + - 'mysql01.example.com' + - 'mysql02.example.com' tasks: - template: From cc794c5265feeb7c6efa949674cd07353f644a60 Mon Sep 17 00:00:00 2001 From: Reto Gantenbein Date: Tue, 14 Feb 2017 20:53:13 +0100 Subject: [PATCH 5/6] Define 'custom_checks' variable format --- vars/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vars/main.yml b/vars/main.yml index a46c02c..7b86372 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -37,6 +37,9 @@ checkmk_server__confd_variable_map: checkgroup_parameters: filename: 'rules.mk' template: 'rule_w_default' + custom_checks: + filename: 'rules.mk' + template: 'rule' datasource_programs: filename: 'rules.mk' template: 'rule' From d6074f40cd79cdfdbc85b2a45f688831cf35d1d9 Mon Sep 17 00:00:00 2001 From: Reto Gantenbein Date: Tue, 14 Feb 2017 20:59:07 +0100 Subject: [PATCH 6/6] Adjust default contract group naming to upstream The 'all' contact group is meant to receive notifications for every service on every host. Therefore follow upstream to call it 'Everything' instead of 'Everybody'. --- defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defaults/main.yml b/defaults/main.yml index 3837f36..1e03a12 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -513,7 +513,7 @@ checkmk_server__contact_defaults: checkmk_server__site_cfg_contactgroups: - name: 'define_contactgroups' value: - all: 'Everybody' + all: 'Everything' # .. envvar:: checkmk_server__site_cfg_rules