--- # LE SITE ENREGISTRE LA CLE DE LECTURE DE CHAQUE LOCATAIRE SUR SON DEPOT (2026-10-11). # # Voir `docs/depots-prives-conception.md` et `scripts/forge_cles.py`. Le script tourne SUR le # runner du site : il y lit les faces que le site tire (et rien d'autre de ses locataires), et # il y joint la forge. Le mot de passe d'administration vient de la voute du site, par # l'environnement, et n'est jamais affiche. # # make forge-cles montre ce qui serait fait # make forge-cles CONFIRMER=true l'ecrit, puis relit - name: Les cles de lecture des locataires, sur la forge du site hosts: serveur_ops_site gather_facts: false become: true become_user: "{{ serveur_ops_utilisateur | default('setops') }}" vars: forge_cles_racine: "{{ serveur_ops_racine | default('/opt/setops') }}" forge_cles_moteur: "{{ (serveur_ops_depots | selectattr('role', 'eq', 'moteur') | first).dest }}" forge_cles_confirmer: "{{ lookup('env', 'CONFIRMER') == 'true' }}" tasks: - name: Exiger le mot de passe d'administration de la forge (voute du site) ansible.builtin.assert: that: vault_forgejo_admin | default('') | length > 0 fail_msg: "vault_forgejo_admin absent : la voute du site n'est pas chargee." no_log: true - name: Confronter les faces aux cles de la forge ansible.builtin.command: argv: "{{ ['python3', 'scripts/forge_cles.py'] + (['--confirmer'] if (forge_cles_confirmer | bool) else []) }}" chdir: "{{ forge_cles_racine }}/{{ forge_cles_moteur }}" environment: FORGEJO_ADMIN: "{{ vault_forgejo_admin }}" PATH: "{{ forge_cles_racine }}/venv/bin:/usr/local/bin:/usr/bin:/bin" # En simulation, le script ne fait que montrer (sans --confirmer) : il peut tourner. check_mode: false register: forge_cles changed_when: "'ajoutee' in forge_cles.stdout or 'retiree' in forge_cles.stdout" failed_when: forge_cles.rc not in [0] - name: Ce que la forge porte ansible.builtin.debug: msg: "{{ forge_cles.stdout_lines }}"