supervision : declarer a qui elle parle
Some checks are pending
verifier / verifier (push) Waiting to run
Some checks are pending
verifier / verifier (push) Waiting to run
Icinga livre son exemple avec root@localhost — une adresse que personne ne lit. Une supervision qui voit tout et n en parle a personne a le meme effet qu aucune supervision, en plus couteux : elle rassure. serveur_icinga_destinataire cree un utilisateur dans le groupe auquel les notifications sont deja assignees (Icinga refuse deux objets de meme nom, on ne peut pas redefinir l exemple ; on en ajoute un autre, l exemple reste muet). Vide, aucun destinataire n est pose ET LE DEPLOIEMENT LE DIT — plutot que de laisser croire qu une alerte partira. Eprouve : message expedie par le relais du site, status=sent (250 2.0.0 Ok), livre directement a mx.chezlepro.ca sans intermediaire ni dependance envers un locataire. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
This commit is contained in:
parent
4e12c3a802
commit
cccb4e5b43
4 changed files with 54 additions and 0 deletions
|
|
@ -70,3 +70,14 @@ serveur_icinga_sauvegarde_attendue: >-
|
||||||
{{ (client_backup_groupes_etat | default([]) | map('extract', groups)
|
{{ (client_backup_groupes_etat | default([]) | map('extract', groups)
|
||||||
| select('defined') | flatten | unique | list)
|
| select('defined') | flatten | unique | list)
|
||||||
| intersect(groups['client_backup'] | default([])) }}
|
| intersect(groups['client_backup'] | default([])) }}
|
||||||
|
|
||||||
|
# A QUI LA SUPERVISION PARLE — vide = personne, et on le DIT.
|
||||||
|
#
|
||||||
|
# Icinga livre son exemple avec `root@localhost`. Une supervision qui voit tout et
|
||||||
|
# n'en parle a personne a le meme effet qu'une supervision absente, en plus couteux :
|
||||||
|
# elle rassure. Renseigne, ce champ cree un destinataire dans le groupe auquel les
|
||||||
|
# notifications sont deja assignees.
|
||||||
|
#
|
||||||
|
# Vide, aucun destinataire n'est pose et le deploiement le SIGNALE — plutot que de
|
||||||
|
# laisser croire qu'une alerte partira.
|
||||||
|
serveur_icinga_destinataire: ""
|
||||||
|
|
|
||||||
|
|
@ -199,3 +199,24 @@
|
||||||
group: root
|
group: root
|
||||||
mode: "0644"
|
mode: "0644"
|
||||||
delegate_to: "{{ groups['serveur_backup'] | first }}"
|
delegate_to: "{{ groups['serveur_backup'] | first }}"
|
||||||
|
|
||||||
|
# --- A QUI PARLER -------------------------------------------------------------
|
||||||
|
- name: Déclarer le destinataire des alertes
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: setops-users.conf.j2
|
||||||
|
dest: /etc/icinga2/conf.d/setops-users.conf
|
||||||
|
owner: root
|
||||||
|
group: nagios
|
||||||
|
mode: "0640"
|
||||||
|
when: serveur_icinga_destinataire | length > 0
|
||||||
|
notify: Redemarrer icinga2
|
||||||
|
|
||||||
|
# DIRE CE QU'ON NE FAIT PAS. Sans destinataire, Icinga notifie `root@localhost` — une
|
||||||
|
# adresse que personne ne lit. Le silence alerterait alors dans le vide.
|
||||||
|
- name: Dire que personne ne recevra les alertes
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: >-
|
||||||
|
`serveur_icinga_destinataire` n'est pas renseigne : les notifications iront a
|
||||||
|
`root@localhost`, que personne ne lit. La supervision VERRA les defauts sans
|
||||||
|
pouvoir les dire. Declarer l'adresse au plan.
|
||||||
|
when: serveur_icinga_destinataire | length == 0
|
||||||
|
|
|
||||||
20
roles/serveur_icinga/templates/setops-users.conf.j2
Normal file
20
roles/serveur_icinga/templates/setops-users.conf.j2
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Gere par Set-OPS (role serveur_icinga). Ne pas editer a la main.
|
||||||
|
*
|
||||||
|
* A QUI LA SUPERVISION PARLE.
|
||||||
|
*
|
||||||
|
* Icinga livre `users.conf` avec `email = "root@localhost"` — une adresse qui n'existe
|
||||||
|
* nulle part et que personne ne lit. Une supervision qui voit tout et le dit a personne
|
||||||
|
* a le meme effet qu'une supervision absente, en plus couteux : elle rassure.
|
||||||
|
*
|
||||||
|
* Ce fichier REMPLACE l'utilisateur d'exemple par celui du plan. Il trie apres
|
||||||
|
* `users.conf` — mais Icinga refuse deux objets de meme nom, on ne peut donc pas le
|
||||||
|
* redefinir : on en declare un AUTRE, et on l'ajoute au groupe auquel les notifications
|
||||||
|
* sont deja assignees. L'exemple reste, muet ; le notre recoit.
|
||||||
|
*/
|
||||||
|
object User "setops-exploitant" {
|
||||||
|
import "generic-user"
|
||||||
|
display_name = "Exploitant Set-OPS"
|
||||||
|
groups = [ "icingaadmins" ]
|
||||||
|
email = "{{ serveur_icinga_destinataire }}"
|
||||||
|
}
|
||||||
|
|
@ -403,6 +403,8 @@ def inventaire() -> dict:
|
||||||
# depend de l'ordre des plays est un reglage qui reviendra en arriere.
|
# depend de l'ordre des plays est un reglage qui reviendra en arriere.
|
||||||
#
|
#
|
||||||
# Ici, tout play qui applique `ssh_hardening` a cet hote la voit.
|
# Ici, tout play qui applique `ssh_hardening` a cet hote la voit.
|
||||||
|
# A qui la supervision parle. Vide, le role le SIGNALE au deploiement.
|
||||||
|
"serveur_icinga_destinataire": str(intrants.get("supervision_courriel") or ""),
|
||||||
# LE POSTFIX DU SITE EXPEDIE, IL NE RECOIT PAS.
|
# LE POSTFIX DU SITE EXPEDIE, IL NE RECOIT PAS.
|
||||||
#
|
#
|
||||||
# `serveur_postfix` est d'abord le serveur de courriel d'un ecosysteme : il
|
# `serveur_postfix` est d'abord le serveur de courriel d'un ecosysteme : il
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue