DEBOPS.ICINGA_DB(5)

NAME
debops.icinga_db - Manage Icinga 2 database using Ansible

SYNOPSIS

debops run service/icinga_db [--limit group,host,...] [--diff] [--check] [--tags tag1,tag2,...] [--skip-tags tag1,tag2,...] [<ansible-playbook options>] ...

DESCRIPTION

The Icinga <https://www.icinga.com/> project is a monitoring solution which can be used to monitor infrastructure hosts and services. Icinga can use variety of remote agents as well as SNMP to monitor remote hosts.

DebOps provides support for Icinga 2, split into several roles:

•   the debops.icinga role is the Icinga 2 Agent role, usually installed on all hosts in the cluster that should be monitored. Different instances can function as masters, satellites or clients depending on the configuration.

•   the debops.icinga_db role can be used to configure the database support for Icinga 2, used by the web interface. Both PostgreSQL and MariaDB databases are supported.

•   the debops.icinga_web role manages the Icinga 2 Web interface, including installation of external modules like Icinga 2 Director.

GETTING STARTED

  Example inventory

The debops.icinga_db role is used with the main debops.icinga role to configure the database for Icinga 2, and will not work correctly otherwise. Database configuration is performed using the dbconfig configuration management support available in Debian. Both PostgreSQL and MariaDB databases are supported and automatically selected if present.

[debops_service_icinga]
icinga-master
[debops_service_icinga_db]
icinga-master

See the Deployment guide documentation for more details about deploying Icinga in DebOps.

  Example playbook

If you are using this role without DebOps, here's an example Ansible playbook that uses the debops.icinga_db role:

---
# SPDX-License-Identifier: GPL-3.0-only
- name: Configure Icinga database
  collections: [ 'debops.debops', 'debops.roles01',
                 'debops.roles02', 'debops.roles03' ]
  hosts: [ 'debops_service_icinga_db' ]
  become: True
  environment: '{{ inventory__environment | d({})
                   | combine(inventory__group_environment | d({}))
                   | combine(inventory__host_environment  | d({})) }}'
  roles:
    - role: mariadb
      tags: [ 'role::mariadb', 'skip::mariadb' ]
      mariadb__dependent_databases: '{{ icinga_db__mariadb__dependent_databases }}'
      mariadb__dependent_users: '{{ icinga_db__mariadb__dependent_users }}'
      when: icinga_db__type == 'mariadb'
    - role: postgresql
      tags: [ 'role::postgresql', 'skip::postgresql' ]
      postgresql__dependent_roles: '{{ icinga_db__postgresql__dependent_roles }}'
      postgresql__dependent_databases: '{{ icinga_db__postgresql__dependent_databases }}'
      when: icinga_db__type == 'postgresql'
    - role: icinga_db
      tags: [ 'role::icinga_db', 'skip::icinga_db' ]

  Ansible tags

You can use Ansible --tags or --skip-tags parameters to limit what tasks are performed during Ansible run. This can be used after a host was first configured to speed up playbook execution, when you are sure that most of the configuration is already in the desired state.

Available role tags:

role::icinga_db
    Main role tag, should be used in the playbook to execute all of the role tasks as well as role dependencies.

AUTHOR
Maciej Delmanowski, Gabriel Lewertowski, David Härdeman

COPYRIGHT
2014-2024, Maciej Delmanowski, Nick Janetakis, Robin Schneider and others