bodsch.icinga2
Rôle Ansible : icinga2
Rôle Ansible pour configurer un maître ou un satellite Icinga2.
Je suis en train de transférer ce rôle vers une collection et je ne traiterai donc plus les problèmes ou les demandes de fusion ici.
Cependant, je les inclurai dans la collection !
Merci de faire preuve de patience jusqu'à ce que j'aie terminé le travail !
Exigences et Dépendances
Collections Ansible
ansible-galaxy collection install bodsch.core
ou
ansible-galaxy collection install --requirements-file collections.yml
Module Python
- dnspython
Systèmes d'exploitation
Testé sur
- ArchLinux
- Basé sur Debian
- Debian 10 / 11
- Ubuntu 20.04
- Basé sur RedHat
- Alma Linux 8
- Rocky Linux 8
- OracleLinux 8
Contribution
Merci de lire Contribution
Développement, Branches (Git Tags)
La branche master
est mon cheval de bataille incluant la "dernière nouveauté" et peut être complètement cassée !
Si vous souhaitez utiliser quelque chose de stable, merci d'utiliser une version taguée!
Crédits
- Michael Friedrich
- Nicolai Buchwitz
- Julien Tognazzi
- Carsten Köbke
- Jo. Fiedler
- et beaucoup d'autres pour faire d'icinga2 ce qu'il est
Merci de lire la documentation suivante pour les points de configuration.
Documentation
- Fonctionnalités
- Utilisateurs API
- groupes
- appliquer des règles
- temps d'arrêt
- commandes de vérification
- maître
- satellite
- Sauvegarde et Restauration
Exemples
Un ensemble de test complet peut être trouvé dans le GitLab sous icinga2-infrastructure.
Maître Icinga2
maître unique
---
- hôte: icinga-master
vars:
icinga2_ido:
user: icinga2_ido
password: icinga2_ido
host: localhost
cleanup:
acknowledgements_age: 72h
icinga2_api:
user:
icinga2:
password: S0mh1TuFJI
permissions: '*'
icinga2_salt: 42T2fYT7bIxj5v291ajAW6kK0njvNMww8eWinBdEO5vh02xwC5qaNMMx77qNkYFE
icinga2_masters:
master-1.icinga.local:
icinga2_host_object:
master-1.icinga.local:
endpoint_name: master-1.icinga.local
zone: master
display_name: master-1.icinga.local
import: generic-host
address: '{{ ansible_default_ipv4.address }}'
vars: |
os = "Linux"
dist = "{{ ansible_distribution }}"
dist_ver = "{{ ansible_distribution_version }}"
disks = {
"disk /" = {
disk_partitions = "/"
}
}
services = [ "uptime", "memory" ]
roles:
- role: icinga2
multi-maître
---
- hôte: icinga-master
vars:
icinga2_ido:
user: icinga2_ido
password: icinga2_ido
host: localhost
cleanup:
acknowledgements_age: 72h
icinga2_api:
user:
icinga2:
password: S0mh1TuFJI
permissions: '*'
icinga2_salt: 42T2fYT7bIxj5v291ajAW6kK0njvNMww8eWinBdEO5vh02xwC5qaNMMx77qNkYFE
icinga2_ha: true
icinga2_masters:
master-1.icinga.local:
# type: primary
ip: 192.168.130.20
port: 5665
master-2.icinga.local:
ip: 192.168.130.21
roles:
- role: icinga2
Satellite Icinga
simple
---
- hôte: icinga-master
vars:
icinga2_mode: satellite
icinga2_salt: 42T2fYT7bIxj5v291ajAW6kK0njvNMww8eWinBdEO5vh02xwC5qaNMMx77qNkYFE
icinga2_masters:
master-1.icinga.local:
icinga2_host_object:
satellite-1.icinga.local:
endpoint_name: satellite-1.icinga.local
zone: "{{ icinga2_satellite_zone }}"
display_name: satellite-1.icinga.local
import: generic-host
address: '{{ ansible_default_ipv4.address }}'
vars: |
os = "Linux"
dist = "{{ ansible_distribution }}"
dist_ver = "{{ ansible_distribution_version }}"
satellite = true
disks = {
"disk /" = {
disk_partitions = "/"
}
}
services = [ "uptime" ]
roles:
- role: icinga2
multi satellite avec zones
---
- hôte: icinga-master
vars:
icinga2_mode: satellite
icinga2_salt: 42T2fYT7bIxj5v291ajAW6kK0njvNMww8eWinBdEO5vh02xwC5qaNMMx77qNkYFE
icinga2_masters:
master-1.icinga.local:
icinga2_satellites:
zone1:
satellite-1.icinga.local:
ip: 192.168.130.30
satellite-2.icinga.local:
ip: 192.168.130.31
roles:
- role: icinga2
Tests
pour les tests
tox -e py38-ansible29 -- molecule
tox -e py38-ansible29 -- molecule -s icinga2-satellite
Dépannage et Problèmes connus
API
export CURL_OPTS="--silent --insecure"
export ICINGA_CREDS="--user icinga2:S0mh1TuFJI"
export ICINGA_API_URL="https://master-1.icinga.local:5665/v1"
$ curl ${ICINGA_CREDS} ${CURL_OPTS} --header 'Accept: application/json' ${ICINGA_API_URL}/status/ApiListener | jq --raw-output ".results[].status.api.zones"
$ curl ${ICINGA_CREDS} ${CURL_OPTS} --header 'Accept: application/json' ${ICINGA_API_URL}/status/CIB | jq --raw-output '.results[].status.uptime'
$ curl ${ICINGA_CREDS} ${CURL_OPTS} --header 'Accept: application/json' ${ICINGA_API_URL}/status/ApiListener | jq --raw-output ".results[].status.api"
$ curl ${ICINGA_CREDS} ${CURL_OPTS} ${ICINGA_API_URL}/objects/hosts | jq
$ curl ${ICINGA_CREDS} ${CURL_OPTS} --header 'Accept: application/json' --header 'X-HTTP-Method-Override: GET' --request POST --data '{ "attrs": [ "name" ], "type": "Host", "filter": "host.name==\"master-1.icinga.local\"" }' ${ICINGA_API_URL}/objects/hosts
Licence
BSD 2-clauses
ansible role for handling icinga2 as master or satellite
ansible-galaxy install bodsch.icinga2