Set-OPS-Public/roles/resoudre_annuaire
Daniel Allaire 5ecce4282a une console pour le site, et un repli qui ouvrait vers l Internet
Icinga Web 2 gagne un troisieme mode, locale : nginx authentifie en HTTP Basic
et pose REMOTE_USER, l application le croit. Un SITE n a ni annuaire ni Keycloak
— ce sont des services d ecosysteme. Ni backend LDAP ni backend de groupes : un
backend qui vise une ressource inexistante fait echouer chaque ouverture de
session. L habilitation nomme alors une personne, entorse a D-66 ecrite plutot
que contournee.

Deux pieges en chemin : resoudre_annuaire etait appele sans condition et tombait
sur NoneType has no len (default sans son second argument ne remplace pas None),
et le flux du role ne nommait que l edge — le site n en a pas, donc personne ne
pouvait entrer. serveur_grafana portait deja la reponse.

LE DEFAUT DU DEVIS : une sortie vers un role ABSENT de l ecosysteme retombait
sur !SETOPS_INTERNES, la forme de vers l Internet. La frontiere aurait autorise
la console a parler LDAPS a n importe quelle machine du monde, pour joindre un
annuaire qui n existe pas. C est une source vide ouvre le port, cote
destination. Trois regles du meme defaut etaient DEJA posees pour postfix.

La frontiere n est pas ecrite : elle porte la production, et le devis attend un
mot.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 19:11:22 -04:00
..
defaults annuaire : un compte de service par consommateur, et la porte se ferme 2026-09-13 13:36:38 -04:00
tasks une console pour le site, et un repli qui ouvrait vers l Internet 2026-09-14 19:11:22 -04:00
README.md docs : un README par rôle (12 manquants) + carte remise à l'état du code 2026-07-29 11:32:06 -04:00

resoudre_annuaire

Rôle utilitaire (pas un groupe déployable) : dérive la connexion à l'annuaire interne (OpenLDAP) de façon déclarative, à partir du domaine_interne et de l'hôte d'annuaire.

Remplace le câblage LDAP qui était répété dans serveur_dovecot, serveur_postfix, serveur_keycloak et serveur_icingaweb2. Un seul endroit fixe le nom de l'hôte d'annuaire.

Usage

- name: Résoudre l'annuaire (rôle partagé)
  ansible.builtin.include_role:
    name: resoudre_annuaire

- name: Adopter la connexion annuaire pour <service>
  ansible.builtin.set_fact:
    <service>_ldap_uri: "{{ resoudre_annuaire_uri }}"
    <service>_ldap_base_dn: "{{ resoudre_annuaire_base_dn }}"

Sorties (facts, persistent après include_role)

Fact Exemple
resoudre_annuaire_fqdn id-ldap-01.exemple.internal
resoudre_annuaire_uri ldaps://id-ldap-01.exemple.internal
resoudre_annuaire_base_dn dc=exemple,dc=internal
resoudre_annuaire_users_dn ou=people,dc=exemple,dc=internal
resoudre_annuaire_bind_dn cn=admin,dc=exemple,dc=internal
resoudre_annuaire_bind_password Déréférencé de la voûte (no_log)

Variables

Variable Défaut Rôle
resoudre_annuaire_hote id-ldap-01 Le point où le nom d'hôte est fixé (surchargeable par instance)
resoudre_annuaire_port 636 Port LDAPS
resoudre_annuaire_encryption ldaps Schéma de l'URI
resoudre_annuaire_bind_cn admin CN du compte de bind
resoudre_annuaire_secret vault_openldap_admin Nom de la variable de voûte

Notes

  • Les sorties sont posées en set_fact (pas en defaults) : les defaults d'un rôle inclus ne survivent pas à la fin de son exécution, contrairement aux facts.
  • Le base DN est dérivé du domaine_interne (a.b → dc=a,dc=b) : aucun DN codé en dur.
  • Le rôle exige un domaine_interne non vide (assertion).
  • LDAPS suppose la confiance step_ca posée par client_pki sur le nœud consommateur.

Prérequis

  • domaine_interne défini ; voûte déverrouillée (ANSIBLE_VAULT_PASSWORD_FILE).