From ddeb3923aa24c9d7b49b96c14d70fe379f7e2c03 Mon Sep 17 00:00:00 2001 From: Dieter Verhelst Date: Mon, 20 Apr 2020 23:52:07 +0200 Subject: [PATCH 1/2] Add initial tests for icingaweb2 --- molecule/centos/tests/test_icingaweb2.py | 36 +++++++++++++++++++++++ molecule/default/tests/test_icingaweb2.py | 36 +++++++++++++++++++++++ molecule/ubuntu/tests/test_icingaweb2.py | 36 +++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 molecule/centos/tests/test_icingaweb2.py create mode 100644 molecule/default/tests/test_icingaweb2.py create mode 100644 molecule/ubuntu/tests/test_icingaweb2.py diff --git a/molecule/centos/tests/test_icingaweb2.py b/molecule/centos/tests/test_icingaweb2.py new file mode 100644 index 0000000..24548eb --- /dev/null +++ b/molecule/centos/tests/test_icingaweb2.py @@ -0,0 +1,36 @@ +import os +import pytest +import testinfra.utils.ansible_runner + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('icingaweb2') + + +@pytest.mark.parametrize('package', ['icingaweb2', 'icingaweb2-common']) +def test_icingaweb2_packages(host, package): + with host.sudo(): + # Check if package is installed + pkg = host.package(package) + assert pkg.is_installed + + +@pytest.mark.parametrize('config', ['roles', 'resources', 'authentication', 'groups', 'config']) +def test_icingaweb2_config(host, config): + with host.sudo(): + # Check if configfile is present + file = host.file('/etc/icingaweb2/%s.ini' % config) + assert file.exists + assert file.user == 'apache' + assert file.group == 'icingaweb2' + assert file.mode == 0o660 + + +def test_icingaweb2_config_roles(host): + with host.sudo(): + # Check if roles.ini is configured + file = host.file('/etc/icingaweb2/roles.ini') + assert file.exists + assert file.user == 'apache' + assert file.group == 'icingaweb2' + assert file.mode == 0o660 + assert file.contains('module/grafana') diff --git a/molecule/default/tests/test_icingaweb2.py b/molecule/default/tests/test_icingaweb2.py new file mode 100644 index 0000000..4ca17a6 --- /dev/null +++ b/molecule/default/tests/test_icingaweb2.py @@ -0,0 +1,36 @@ +import os +import pytest +import testinfra.utils.ansible_runner + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('icingaweb2') + + +@pytest.mark.parametrize('package', ['icingaweb2', 'icingaweb2-common', 'icingaweb2-module-doc', 'icingaweb2-module-monitoring']) +def test_icingaweb2_packages(host, package): + with host.sudo(): + # Check if package is installed + pkg = host.package(package) + assert pkg.is_installed + + +@pytest.mark.parametrize('config', ['roles', 'resources', 'authentication', 'groups', 'config']) +def test_icingaweb2_config(host, config): + with host.sudo(): + # Check if configfile is present + file = host.file('/etc/icingaweb2/%s.ini' % config) + assert file.exists + assert file.user == 'www-data' + assert file.group == 'icingaweb2' + assert file.mode == 0o660 + + +def test_icingaweb2_config_roles(host): + with host.sudo(): + # Check if roles.ini is configured + file = host.file('/etc/icingaweb2/roles.ini') + assert file.exists + assert file.user == 'www-data' + assert file.group == 'icingaweb2' + assert file.mode == 0o660 + assert file.contains('module/grafana') diff --git a/molecule/ubuntu/tests/test_icingaweb2.py b/molecule/ubuntu/tests/test_icingaweb2.py new file mode 100644 index 0000000..4ca17a6 --- /dev/null +++ b/molecule/ubuntu/tests/test_icingaweb2.py @@ -0,0 +1,36 @@ +import os +import pytest +import testinfra.utils.ansible_runner + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('icingaweb2') + + +@pytest.mark.parametrize('package', ['icingaweb2', 'icingaweb2-common', 'icingaweb2-module-doc', 'icingaweb2-module-monitoring']) +def test_icingaweb2_packages(host, package): + with host.sudo(): + # Check if package is installed + pkg = host.package(package) + assert pkg.is_installed + + +@pytest.mark.parametrize('config', ['roles', 'resources', 'authentication', 'groups', 'config']) +def test_icingaweb2_config(host, config): + with host.sudo(): + # Check if configfile is present + file = host.file('/etc/icingaweb2/%s.ini' % config) + assert file.exists + assert file.user == 'www-data' + assert file.group == 'icingaweb2' + assert file.mode == 0o660 + + +def test_icingaweb2_config_roles(host): + with host.sudo(): + # Check if roles.ini is configured + file = host.file('/etc/icingaweb2/roles.ini') + assert file.exists + assert file.user == 'www-data' + assert file.group == 'icingaweb2' + assert file.mode == 0o660 + assert file.contains('module/grafana') From fa4bdff3d0846b0b693fba467fd81ba0e61f29d1 Mon Sep 17 00:00:00 2001 From: Dieter Verhelst Date: Mon, 20 Apr 2020 23:53:42 +0200 Subject: [PATCH 2/2] Replace long configline with list, defaulted to default var --- molecule/centos/molecule.yml | 2 +- molecule/default/molecule.yml | 2 +- molecule/ubuntu/molecule.yml | 2 +- roles/icinga2_icingaweb2/defaults/main.yml | 30 ++++++++++++++++++- .../icinga2_icingaweb2/templates/roles.ini.j2 | 2 +- 5 files changed, 33 insertions(+), 5 deletions(-) diff --git a/molecule/centos/molecule.yml b/molecule/centos/molecule.yml index 7f07464..4a9ac07 100644 --- a/molecule/centos/molecule.yml +++ b/molecule/centos/molecule.yml @@ -63,7 +63,7 @@ provisioner: icingaweb_roles: - name: Testrole groups: Testgroup - permissions: "module/grafana, module/monitoring, monitoring/command/schedule-check, monitoring/command/acknowledge-problem, monitoring/command/remove-acknowledgement, monitoring/command/comment/*, monitoring/command/comment/add, monitoring/command/downtime/*, monitoring/command/downtime/schedule, monitoring/command/downtime/delete" + permissions: '{{ icingaweb_roles_permissions_default }}' filter: "(host_name=*test*|host_name=test*)" icinga2satellite: icinga_is_satellite: true diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index 112086f..9cdd88a 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -66,7 +66,7 @@ provisioner: icingaweb_roles: - name: Testrole groups: Testgroup - permissions: "module/grafana, module/monitoring, monitoring/command/schedule-check, monitoring/command/acknowledge-problem, monitoring/command/remove-acknowledgement, monitoring/command/comment/*, monitoring/command/comment/add, monitoring/command/downtime/*, monitoring/command/downtime/schedule, monitoring/command/downtime/delete" + permissions: '{{ icingaweb_roles_permissions_default }}' filter: "(host_name=*test*|host_name=test*)" icinga2satellite: icinga_is_satellite: true diff --git a/molecule/ubuntu/molecule.yml b/molecule/ubuntu/molecule.yml index 62d2004..c50e728 100644 --- a/molecule/ubuntu/molecule.yml +++ b/molecule/ubuntu/molecule.yml @@ -63,7 +63,7 @@ provisioner: icingaweb_roles: - name: Testrole groups: Testgroup - permissions: "module/grafana, module/monitoring, monitoring/command/schedule-check, monitoring/command/acknowledge-problem, monitoring/command/remove-acknowledgement, monitoring/command/comment/*, monitoring/command/comment/add, monitoring/command/downtime/*, monitoring/command/downtime/schedule, monitoring/command/downtime/delete" + permissions: '{{ icingaweb_roles_permissions_default }}' filter: "(host_name=*test*|host_name=test*)" icinga2satellite: icinga_is_satellite: true diff --git a/roles/icinga2_icingaweb2/defaults/main.yml b/roles/icinga2_icingaweb2/defaults/main.yml index 237aa13..e7d17ac 100644 --- a/roles/icinga2_icingaweb2/defaults/main.yml +++ b/roles/icinga2_icingaweb2/defaults/main.yml @@ -50,9 +50,29 @@ icingaweb_ldap_servers: [] # icingaweb_roles: # - name: Monitoring # groups: Monitoring -# permissions: "module/grafana, module/monitoring, monitoring/command/schedule-check, monitoring/command/acknowledge-problem, monitoring/command/remove-acknowledgement, monitoring/command/comment/*, monitoring/command/comment/add, monitoring/command/downtime/*, monitoring/command/downtime/schedule, monitoring/command/downtime/delete" +# permissions: '{{ icingaweb_roles_permissions_default }}' icingaweb_roles: [] +# description: list of default permissions granted +# type: list +# example: +# icingaweb_roles_permissions_default: +# - module/monitoring +# - monitoring/command/schedule-check +# - monitoring/command/comment/* +# - monitoring/command/downtime/* +icingaweb_roles_permissions_default: + - module/grafana + - module/monitoring + - monitoring/command/schedule-check + - monitoring/command/acknowledge-problem + - monitoring/command/remove-acknowledgement + - monitoring/command/comment/* + - monitoring/command/comment/add + - monitoring/command/downtime/* + - monitoring/command/downtime/schedule + - monitoring/command/downtime/delete + # description: default php version on distro # os specif, defaults in vars/ # type: string @@ -67,3 +87,11 @@ icingaweb_roles: [] # os specif, defaults in vars/ # type: string # icinga2_icingaweb2_schema: /usr/share/doc/icingaweb2/schema/mysql.schema.sql + +# description: idodb database name +# type: string +icinga2_idodb_name: icinga2 + +# description: idodb database user +# type: string +icinga2_idodb_user: icinga2 diff --git a/roles/icinga2_icingaweb2/templates/roles.ini.j2 b/roles/icinga2_icingaweb2/templates/roles.ini.j2 index 25060cb..0d9ee1e 100644 --- a/roles/icinga2_icingaweb2/templates/roles.ini.j2 +++ b/roles/icinga2_icingaweb2/templates/roles.ini.j2 @@ -14,7 +14,7 @@ users = "{{ r.users }}" {% if r.groups is defined %} groups = "{{ r.groups }}" {% endif %} -permissions = "{{ r.permissions }}" +permissions = "{{ r.permissions|sort|unique|join(', ') }}" {% if r.filter is defined %} monitoring/filter/objects = "{{ r.filter }}" {% endif %}