114 lines
4.1 KiB
YAML
114 lines
4.1 KiB
YAML
|
|
---
|
||
|
|
# LE NOEUD RAPPORTE SES UNITES EN ECHEC. Voir le gabarit du script pour le pourquoi.
|
||
|
|
#
|
||
|
|
# Conditionne a l'existence d'un `serveur_icinga` : sans destinataire, le rapport
|
||
|
|
# n'irait nulle part, et un timer qui echoue chaque quart d'heure apprend a ignorer
|
||
|
|
# le rouge. Meme regle que `client_backup`.
|
||
|
|
- name: Aucune supervision dans cet écosystème — rien à poser
|
||
|
|
ansible.builtin.debug:
|
||
|
|
msg: >-
|
||
|
|
Aucun hôte `serveur_icinga` : le rapport de santé n'est pas posé. Ce n'est pas une
|
||
|
|
erreur — c'est un écosystème sans supervision, et le dire vaut mieux que d'installer
|
||
|
|
un minuteur qui échouerait dans le vide.
|
||
|
|
when: not client_sante_icinga_hote
|
||
|
|
|
||
|
|
- name: Poser le rapport de santé
|
||
|
|
when: client_sante_icinga_hote | length > 0
|
||
|
|
block:
|
||
|
|
- name: Exiger de quoi rapporter à Icinga
|
||
|
|
ansible.builtin.assert:
|
||
|
|
that:
|
||
|
|
- client_sante_icinga_motdepasse | length > 0
|
||
|
|
fail_msg: >-
|
||
|
|
`vault_icinga_api_depot` requis : un hôte `serveur_icinga` existe, mais aucun
|
||
|
|
secret d'API. Le nœud verrait ses unités en échec sans pouvoir le dire.
|
||
|
|
|
||
|
|
- name: Assurer le répertoire des secrets Set-OPS
|
||
|
|
ansible.builtin.file:
|
||
|
|
path: /etc/setops
|
||
|
|
state: directory
|
||
|
|
owner: root
|
||
|
|
group: root
|
||
|
|
mode: "0755"
|
||
|
|
|
||
|
|
- name: Déposer le mot de passe d'API Icinga
|
||
|
|
ansible.builtin.copy:
|
||
|
|
content: "{{ client_sante_icinga_motdepasse }}\n"
|
||
|
|
dest: /etc/setops/icinga-api.pass
|
||
|
|
owner: root
|
||
|
|
group: root
|
||
|
|
mode: "0600"
|
||
|
|
no_log: true
|
||
|
|
|
||
|
|
# L'AC d'ICINGA, PAS CELLE DE step-ca : Icinga refuse de servir un certificat qu'il
|
||
|
|
# n'a pas emis (il renouvelle tout ce qui expire sous 30 jours, nos certificats vivent
|
||
|
|
# 24 h). Domaine de confiance ferme, pair authentifie malgre tout.
|
||
|
|
- name: L'AC d'Icinga est-elle déjà disponible ?
|
||
|
|
ansible.builtin.stat:
|
||
|
|
path: "{{ client_sante_icinga_ca_source }}"
|
||
|
|
delegate_to: "{{ client_sante_icinga_hote }}"
|
||
|
|
register: client_sante_ca_presente
|
||
|
|
|
||
|
|
- name: Récupérer l'AC d'Icinga depuis l'hôte de supervision
|
||
|
|
when: client_sante_ca_presente.stat.exists
|
||
|
|
ansible.builtin.slurp:
|
||
|
|
src: "{{ client_sante_icinga_ca_source }}"
|
||
|
|
delegate_to: "{{ client_sante_icinga_hote }}"
|
||
|
|
register: client_sante_ca_icinga
|
||
|
|
|
||
|
|
- name: Déposer l'AC d'Icinga pour la vérification du pair
|
||
|
|
when: client_sante_ca_presente.stat.exists
|
||
|
|
ansible.builtin.copy:
|
||
|
|
content: "{{ client_sante_ca_icinga.content | b64decode }}"
|
||
|
|
dest: "{{ client_sante_ca_verification }}"
|
||
|
|
owner: root
|
||
|
|
group: root
|
||
|
|
mode: "0644"
|
||
|
|
|
||
|
|
- name: Installer curl pour le rapport passif
|
||
|
|
ansible.builtin.apt:
|
||
|
|
name: curl
|
||
|
|
state: present
|
||
|
|
|
||
|
|
- name: Déployer le script de rapport de santé
|
||
|
|
ansible.builtin.template:
|
||
|
|
src: setops-sante.sh.j2
|
||
|
|
dest: /usr/local/sbin/setops-sante.sh
|
||
|
|
owner: root
|
||
|
|
group: root
|
||
|
|
mode: "0750"
|
||
|
|
|
||
|
|
- name: Déployer l'unité systemd du rapport
|
||
|
|
ansible.builtin.template:
|
||
|
|
src: setops-sante.service.j2
|
||
|
|
dest: /etc/systemd/system/setops-sante.service
|
||
|
|
owner: root
|
||
|
|
group: root
|
||
|
|
mode: "0644"
|
||
|
|
notify: Recharger systemd
|
||
|
|
|
||
|
|
- name: Déployer le minuteur du rapport
|
||
|
|
ansible.builtin.template:
|
||
|
|
src: setops-sante.timer.j2
|
||
|
|
dest: /etc/systemd/system/setops-sante.timer
|
||
|
|
owner: root
|
||
|
|
group: root
|
||
|
|
mode: "0644"
|
||
|
|
notify: Recharger systemd
|
||
|
|
|
||
|
|
- name: Activer le rapport de santé
|
||
|
|
ansible.builtin.systemd:
|
||
|
|
name: setops-sante.timer
|
||
|
|
enabled: true
|
||
|
|
state: started
|
||
|
|
daemon_reload: true
|
||
|
|
|
||
|
|
# PREMIER RAPPORT IMMEDIAT, et ce n'est pas une commodite : sans lui, le service
|
||
|
|
# reste « en attente » jusqu'au premier declenchement, et un deploiement qui vient
|
||
|
|
# d'installer la supervision laisserait un tableau vide qu'on prendrait pour un
|
||
|
|
# tableau sain.
|
||
|
|
- name: Rapporter tout de suite (ne pas laisser un tableau vide passer pour sain)
|
||
|
|
ansible.builtin.command: /usr/local/sbin/setops-sante.sh
|
||
|
|
changed_when: false
|
||
|
|
failed_when: false
|