Set-OPS-Public/roles/serveur_rspamd/tasks/main.yml
Daniel Allaire f815b069f7 supervision : le lot check_http, et les greffons qui manquaient a la flotte
La doctrine dit qu un greffon Nagios EST une sonde valide et compte sur les 54
de monitoring-plugins. Mesure : aucun n etait installe. Le document decrivait
une possibilite qui n existait pas, et chaque role ayant besoin d un controle
HTTP n avait d autre choix que d ecrire du shell.

Le PORTEUR les installe desormais — c est son affaire de pouvoir executer des
sondes, et les poser role par role en ferait autant de copies de la decision.

Trois sondes, trois enveloppes qui delegue a check_http et rendent son code tel
quel :

  collabora    edition     /hosting/discovery — l adresse que Nextcloud interroge
                           lui-meme ; sans elle le bouton ouvrir meurt et
                           Nextcloud reste vert
  rspamd       filtrage    un filtre muet ne bloque pas le courrier, il le laisse
                           passer
  oauth2_proxy passerelle  ce qui tombe avec elle n est pas elle : les services
                           derriere restent debout et deviennent injoignables

Chacune exige une CHAINE que seul le bon service produit — un 200 peut venir
d une page d erreur. Cette chaine est aussi la mise en defaut.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-14 09:34:31 -04:00

100 lines
3.1 KiB
YAML

---
- name: Installer rspamd et Redis
ansible.builtin.apt:
name: "{{ serveur_rspamd_paquets }}"
state: present
update_cache: true
- name: Activer et démarrer Redis (backend rspamd)
ansible.builtin.systemd:
name: redis-server
enabled: true
state: started
when: not ansible_check_mode
# --- Clé DKIM (privée locale ; publique à publier en DNS — Étape B) ---
- name: Créer le répertoire des clés DKIM
ansible.builtin.file:
path: "{{ serveur_rspamd_dkim_repertoire }}"
state: directory
owner: _rspamd
group: _rspamd
mode: "0750"
when: serveur_rspamd_dkim_actif | bool
- name: Générer la clé DKIM (idempotent — seulement si absente)
ansible.builtin.command:
cmd: >-
rspamadm dkim_keygen
-s {{ serveur_rspamd_dkim_selecteur }}
-d {{ serveur_rspamd_dkim_domaine }}
-k {{ serveur_rspamd_dkim_repertoire }}/{{ serveur_rspamd_dkim_domaine }}.{{ serveur_rspamd_dkim_selecteur }}.key
creates: "{{ serveur_rspamd_dkim_repertoire }}/{{ serveur_rspamd_dkim_domaine }}.{{ serveur_rspamd_dkim_selecteur }}.key"
register: serveur_rspamd_dkim_gen
when:
- serveur_rspamd_dkim_actif | bool
- not ansible_check_mode
notify: Redémarrer rspamd
- name: Fixer les droits de la clé DKIM privée
ansible.builtin.file:
path: "{{ serveur_rspamd_dkim_repertoire }}/{{ serveur_rspamd_dkim_domaine }}.{{ serveur_rspamd_dkim_selecteur }}.key"
owner: _rspamd
group: _rspamd
mode: "0640"
when:
- serveur_rspamd_dkim_actif | bool
- not ansible_check_mode
- name: Afficher l'enregistrement DNS DKIM à publier (Étape B)
ansible.builtin.debug:
msg: "{{ serveur_rspamd_dkim_gen.stdout_lines | default(['(clé déjà présente — cf. ' + serveur_rspamd_dkim_repertoire + ')']) }}"
when: serveur_rspamd_dkim_actif | bool
# --- Surcharges de configuration (local.d) ---
- name: Déployer les surcharges local.d (redis, proxy milter)
ansible.builtin.template:
src: "{{ item }}.j2"
dest: "/etc/rspamd/local.d/{{ item }}"
owner: root
group: root
mode: "0644"
loop:
- redis.conf
- worker-proxy.inc
notify: Redémarrer rspamd
- name: Déployer la signature DKIM (local.d)
ansible.builtin.template:
src: dkim_signing.conf.j2
dest: /etc/rspamd/local.d/dkim_signing.conf
owner: root
group: root
mode: "0644"
when: serveur_rspamd_dkim_actif | bool
notify: Redémarrer rspamd
- name: Activer et démarrer rspamd
when: not ansible_check_mode
ansible.builtin.systemd:
name: "{{ serveur_rspamd_service }}"
enabled: true
state: started
# LE ROLE QUI POSSEDE LA VERITE DEPOSE SA PROPRE SONDE. `client_sante` la fait tourner et
# pousse le resultat ; les greffons standard, eux, sont poses par le porteur.
- name: Assurer le repertoire des sondes de supervision
ansible.builtin.file:
path: /usr/local/lib/setops/sondes
state: directory
owner: root
group: root
mode: "0755"
- name: Deposer la sonde « filtrage »
ansible.builtin.template:
src: sonde-filtrage.sh.j2
dest: /usr/local/lib/setops/sondes/filtrage.sh
owner: root
group: root
mode: "0750"