bodsch.icinga2
Rol de Ansible: icinga2
Rol de Ansible para configurar Icinga2 como maestro o satélite.
Estoy en proceso de transferir este rol a una colección, por lo que ya no procesaré problemas ni solicitudes de fusión aquí.
¡Sin embargo, las incluiré en la colección!
¡Por favor, ten paciencia hasta que complete el trabajo!
Requisitos y Dependencias
Colecciones de Ansible
ansible-galaxy collection install bodsch.core
o
ansible-galaxy collection install --requirements-file collections.yml
Módulo de Python
- dnspython
Sistemas Operativos
Probado en
- ArchLinux
- Basado en Debian
- Debian 10 / 11
- Ubuntu 20.04
- Basado en RedHat
- Alma Linux 8
- Rocky Linux 8
- OracleLinux 8
Contribución
Por favor, lee Contribución
Desarrollo, Ramas (Etiquetas de Git)
La rama master
es mi Caballo de Trabajo, incluye "lo último y más avanzado" y puede estar completamente rota.
Si deseas usar algo estable, por favor usa una Versión Etiquetada!
Créditos
- Michael Friedrich
- Nicolai Buchwitz
- Julien Tognazzi
- Carsten Köbke
- Jo. Fiedler
- y muchos más que hicieron de icinga2 lo que es
Por favor, lee la siguiente documentación para puntos de configuración.
Documentación
- Características
- Usuarios de API
- Grupos
- Aplicar reglas
- Tiempos de inactividad
- Comandos de chequeo
- Maestro
- Satélite
- Respaldo y Recuperación
Ejemplos
Una configuración de prueba completa se puede encontrar en GitLab bajo icinga2-infrastructure.
Icinga2 Maestro
maestro único
---
- host: 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-maestro
---
- host: 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:
# tipo: primario
ip: 192.168.130.20
port: 5665
master-2.icinga.local:
ip: 192.168.130.21
roles:
- role: icinga2
Icinga satélite
simple
---
- host: 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
múltiples satélites con zonas
---
- host: 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
pruebas
para pruebas
tox -e py38-ansible29 -- molecule
tox -e py38-ansible29 -- molecule -s icinga2-satellite
Resolución de problemas y problemas conocidos
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
Licencia
BSD de 2 cláusulas
Acerca del proyecto
ansible role for handling icinga2 as master or satellite
Instalar
ansible-galaxy install bodsch.icinga2
Licencia
bsd-2-clause
Descargas
1.5k
Propietario
ex-developer (c, c++, php),
ex-system administrator / engineer,
keep-it-simple,
monitoring,
automation,
system architect