Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion molecule/centos/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
36 changes: 36 additions & 0 deletions molecule/centos/tests/test_icingaweb2.py
Original file line number Diff line number Diff line change
@@ -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')
2 changes: 1 addition & 1 deletion molecule/default/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
36 changes: 36 additions & 0 deletions molecule/default/tests/test_icingaweb2.py
Original file line number Diff line number Diff line change
@@ -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')
2 changes: 1 addition & 1 deletion molecule/ubuntu/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
36 changes: 36 additions & 0 deletions molecule/ubuntu/tests/test_icingaweb2.py
Original file line number Diff line number Diff line change
@@ -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')
30 changes: 29 additions & 1 deletion roles/icinga2_icingaweb2/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
2 changes: 1 addition & 1 deletion roles/icinga2_icingaweb2/templates/roles.ini.j2
Original file line number Diff line number Diff line change
Expand Up @@ -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 %}
Expand Down