Skip to content

Commit 432e67d

Browse files
committed
Merge branch 'master' into distributed-rework
2 parents 52dd25e + a7ade18 commit 432e67d

File tree

8 files changed

+126
-4
lines changed

8 files changed

+126
-4
lines changed

defaults/main.yml

+24-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# .. envvar:: checkmk_server__version
1717
#
1818
# Check_MK software version.
19-
checkmk_server__version: '1.2.8p16'
19+
checkmk_server__version: '1.2.8p20'
2020

2121

2222
# .. envvar:: checkmk_server__version_suffix
@@ -460,6 +460,7 @@ checkmk_server__site_config_map: '{{ checkmk_server__site_cfg_contactgroups +
460460
checkmk_server__site_cfg_servicegroups +
461461
checkmk_server__site_cfg_datasource_programs +
462462
checkmk_server__site_cfg_netif_description +
463+
checkmk_server__site_cfg_notification_defaults +
463464
checkmk_server__site_cfg_software_inventory }}'
464465

465466

@@ -486,7 +487,7 @@ checkmk_server__contact_defaults:
486487
checkmk_server__site_cfg_contactgroups:
487488
- name: 'define_contactgroups'
488489
value:
489-
all: 'Everybody'
490+
all: 'Everything'
490491

491492

492493
# .. envvar:: checkmk_server__site_cfg_rules
@@ -565,6 +566,20 @@ checkmk_server__site_cfg_software_inventory:
565566
else "absent" }}'
566567

567568

569+
# .. envvar:: checkmk_server__site_cfg_notification_defaults
570+
#
571+
# Set fallback email address for rule based notifications. Must be set
572+
# including domain otherwise it won't be accepted by Check_MK.
573+
checkmk_server__site_cfg_notification_defaults:
574+
- name: 'notification_fallback_email'
575+
filename: 'global.mk'
576+
template: 'key_value'
577+
value: '{{ ansible_local.core.admin_public_email[0]
578+
if ("core" in ansible_local) and
579+
("admin_public_email" in ansible_local.core)
580+
else "root@" + ansible_domain }}'
581+
582+
568583
# .. envvar:: checkmk_server__site_cfg_netif_description
569584
#
570585
# Set interface name instead of index for network interface check via
@@ -577,6 +592,13 @@ checkmk_server__site_cfg_netif_description:
577592
wato: False
578593

579594

595+
# .. envvar:: checkmk_server__site_packages
596+
#
597+
# Additional Check_MK packages (MKP) to be installed. See
598+
# :ref:`checkmk_server__site_packages` for more information.
599+
checkmk_server__site_packages: []
600+
601+
580602
# -----------------
581603
# PKI Configuration
582604
# -----------------

docs/defaults-configuration.rst

+34
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,40 @@ following keys:
5656
key set with ``privatekey_file``.
5757

5858

59+
.. _checkmk_server__site_packages:
60+
61+
checkmk_server__site_packages
62+
-----------------------------
63+
64+
Check_MK has a plugin system where site customizations such as additional
65+
checks can be installed. This is done via ``.mkp`` packages. For more
66+
information see the upstream documentation about `Check_MK extension packages`_.
67+
68+
.. _Check_MK extension packages: https://mathias-kettner.com/cms_mkps.html
69+
70+
Packages which should be installed for the current Check_MK site are defined
71+
as a list of YAML dictionaries with the following configuration keys. One of
72+
``path`` or ``url`` must be given:
73+
74+
``name``
75+
Name of the package, required.
76+
77+
``path``
78+
Optional. Local file system path of the ``.mkp`` package archive on the
79+
Ansible controller. Cannot be combined with the ``url`` parameter.
80+
81+
``url``
82+
Optional. Download URL of the ``.mkp`` package archive. Cannot be combined
83+
with the ``path`` parameter.
84+
85+
``checksum``
86+
Optional. Checksum of the download archive given in the ``url`` parameter.
87+
Cannot be combined with the ``path`` parameter. For the accepted parameter
88+
format check the Ansible `get_url module`_ documentation.
89+
90+
.. _get_url module: https://docs.ansible.com/ansible/get_url_module.html#options
91+
92+
5993
.. _checkmk_server__multisite_users:
6094

6195
checkmk_server__multisite_users

docs/getting-started.rst

+3
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,6 @@ Available role tags:
5252

5353
``role::checkmk_server:multisite``
5454
Execute tasks which configure the Check_MK multisite Web interface.
55+
56+
``role::checkmk_server:mkp``
57+
Execute tasks to install Check_MK packages.

tasks/wato.yml

+44
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,50 @@
33
# Check_MK multisite/WATO configuration
44
#
55

6+
- name: Query installed Check_MK packages
7+
command: mkp list
8+
become_user: '{{ checkmk_server__user }}'
9+
become_flags: '-i'
10+
changed_when: False
11+
always_run: True
12+
register: checkmk_server__register_mkp
13+
tags:
14+
- 'role::checkmk_server:mkp'
15+
16+
- name: Download Check_MK packages
17+
get_url:
18+
url: '{{ item.url }}'
19+
dest: '{{ checkmk_server__site_home }}/tmp'
20+
checksum: '{{ item.checksum|d(omit) }}'
21+
when: ('url' in item) and
22+
(item.name not in checkmk_server__register_mkp.stdout_lines)
23+
register: checkmk_server__register_mkp_download
24+
with_items: '{{ checkmk_server__site_packages }}'
25+
tags:
26+
- 'role::checkmk_server:mkp'
27+
28+
- name: Upload Check_MK packages
29+
copy:
30+
src: '{{ item.path }}'
31+
dest: '{{ checkmk_server__site_home }}/tmp'
32+
when: ('path' in item) and
33+
(item.name not in checkmk_server__register_mkp.stdout_lines)
34+
register: checkmk_server__register_mkp_upload
35+
with_items: '{{ checkmk_server__site_packages }}'
36+
tags:
37+
- 'role::checkmk_server:mkp'
38+
39+
- name: Install Check_MK packages
40+
command: mkp install '{{ item.dest|d() }}'
41+
become_user: '{{ checkmk_server__user }}'
42+
become_flags: '-i'
43+
when: not (item | skipped)
44+
with_flattened:
45+
- '{{ checkmk_server__register_mkp_download.results }}'
46+
- '{{ checkmk_server__register_mkp_upload.results }}'
47+
tags:
48+
- 'role::checkmk_server:mkp'
49+
650
- name: Generate Check_MK WATO multisite definitions
751
template:
852
src: '{{ lookup("template_src", "etc/check_mk/multisite.d/wato/" + item | basename) }}'

templates/macros/checkmk_config.j2

+3-2
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@
120120

121121
{% macro tmpl_var__key_value(_name, _value) %}
122122

123-
{{ _name }} = {{ _value }}
123+
{{ _name }} = {{ "'" + _value + "'" if (_value is string) else _value }}
124124
{% endmacro %}
125125

126126

@@ -305,11 +305,12 @@ if {{ _name }} == None:
305305
{% set _rule = "'" + _value + "'" %}
306306
{% elif (_value is mapping) or (_value is sequence) %}
307307
{#
308-
# Remove unicode hints for dictionary keys.
308+
# Remove unicode hints for dictionary keys and values.
309309
# Substitute lists with tuples: ['foo', 'bar'] -> ('foo', 'bar')
310310
# Fix nested lists: ({'foo': (bar)}) -> ('foo', ('bar'))
311311
#}
312312
{% set _rule = _value | regex_replace("(, |{)u'", "\\1'") |
313+
regex_replace(": u'", ": '") |
313314
replace("[", "(") | replace("]", ")") |
314315
regex_replace("\({('[\w]+'):", "(\\1,") | replace(")})", "))") %}
315316
{% else %}

tests/reference.mk

+5
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,8 @@ checkgroup_parameters.setdefault('threads', [])
8585
checkgroup_parameters['threads'] = [
8686
( (4000, 8000), ['physical', ], ALL_HOSTS, {'description': u'Physical servers need to handle a lot of threads'} ),
8787
] + checkgroup_parameters['threads']
88+
89+
90+
custom_checks = [
91+
( {'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'] ),
92+
]

tests/test_templates.yml

+10
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,16 @@
123123
value: [ 4000, 8000 ]
124124
tags: [ 'physical' ]
125125
description: 'Physical servers need to handle a lot of threads'
126+
# custom_checks
127+
- name: 'custom_checks'
128+
filename: 'rules.mk'
129+
template: 'rule'
130+
value:
131+
service_description: 'Galera Cluster'
132+
command_line: '$USER1$/check_by_ssh -t 60 -E -H $HOSTADDRESS$ -C "sudo /usr/lib64/nagios/plugins/check_galera_cluster -c 1"'
133+
hosts:
134+
- 'mysql01.example.com'
135+
- 'mysql02.example.com'
126136

127137
tasks:
128138
- template:

vars/main.yml

+3
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ checkmk_server__confd_variable_map:
3737
checkgroup_parameters:
3838
filename: 'rules.mk'
3939
template: 'rule_w_default'
40+
custom_checks:
41+
filename: 'rules.mk'
42+
template: 'rule'
4043
datasource_programs:
4144
filename: 'rules.mk'
4245
template: 'rule'

0 commit comments

Comments
 (0)