Set-OPS-Public/roles/resoudre_annuaire/tasks/main.yml
Daniel Allaire 8260f2f914 annuaire : l'hote se derive du plan, il ne s'ecrit plus
`resoudre_annuaire` fixait `id-ldap-01` en dur — une machine qui n'existe dans
aucun plan. Postfix ne pouvait pas se lier : « Can't contact LDAP server ».

L'intention etait juste et son commentaire le disait : un seul point ou le nom
est fixe, au lieu d'etre repete dans chaque role. Mais ECRIT au lieu d'etre
derive. Une valeur unique et fausse vaut mieux qu'une valeur repetee et fausse ;
elle reste fausse.

Le plan le declare (`applications.openldap.hote`) : c'est de la qu'elle vient.

infra-mail-01 et edge-mta-01 deployees, 19 playbooks sans un echec. LMTP en TLS
verifie, mynetworks sur le supernet derive, liaison LDAP etablie vers idm-01.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 12:46:48 -04:00

44 lines
2.3 KiB
YAML

---
# Rôle utilitaire (pas un groupe déployable) : résout la connexion à l'annuaire (OpenLDAP)
# de façon déclarative, dérivée du domaine interne + de l'hôte d'annuaire. Remplace le
# câblage LDAP répété dans serveur_dovecot/postfix/keycloak/icingaweb2.
#
# Sorties (facts) :
# resoudre_annuaire_fqdn — id-ldap-01.<domaine>
# resoudre_annuaire_uri — ldaps://id-ldap-01.<domaine>
# resoudre_annuaire_base_dn — dc=...,dc=...
# resoudre_annuaire_users_dn — ou=people,dc=...
# resoudre_annuaire_bind_dn — cn=admin,dc=...
# resoudre_annuaire_bind_password — secret déréférencé depuis la voûte (no_log)
- name: Exiger un domaine interne non vide
ansible.builtin.assert:
that:
- domaine_interne is defined
- domaine_interne | length > 0
fail_msg: "domaine_interne doit être défini pour résoudre l'annuaire."
- name: Charger le registre des applications (hôte de l'annuaire)
ansible.builtin.include_vars:
file: "{{ setops_plan_dir }}/applications.yml"
failed_when: false
- name: Dériver l'hôte de l'annuaire depuis le plan
ansible.builtin.set_fact:
resoudre_annuaire_hote: "{{ (applications | default({})).get(resoudre_annuaire_app, {}).get('hote') }}"
when: ((applications | default({})).get(resoudre_annuaire_app, {}).get('hote') | default('')) | length > 0
# set_fact (pas les defaults) pour que ces valeurs persistent dans le rôle consommateur
# après include_role (les defaults du rôle inclus ne fuient pas hors de son exécution).
- name: Dériver la connexion à l'annuaire
ansible.builtin.set_fact:
resoudre_annuaire_fqdn: "{{ resoudre_annuaire_hote }}.{{ domaine_interne }}"
resoudre_annuaire_uri: "{{ resoudre_annuaire_encryption }}://{{ resoudre_annuaire_hote }}.{{ domaine_interne }}"
resoudre_annuaire_port: "{{ resoudre_annuaire_port }}"
resoudre_annuaire_base_dn: "dc={{ domaine_interne.split('.') | join(',dc=') }}"
resoudre_annuaire_users_dn: "ou=people,dc={{ domaine_interne.split('.') | join(',dc=') }}"
resoudre_annuaire_bind_dn: "cn={{ resoudre_annuaire_bind_cn }},dc={{ domaine_interne.split('.') | join(',dc=') }}"
- name: Déréférencer le mot de passe de bind (Vault)
ansible.builtin.set_fact:
resoudre_annuaire_bind_password: "{{ lookup('vars', resoudre_annuaire_secret) }}"
no_log: true