--- # LES COMPTES DE LA FORGE DU SITE (2026-10-11, lot 3b). # # Voir `docs/depots-prives-conception.md` et `scripts/forge_comptes.py`. Le script tourne SUR le # runner du site : il y lit le plan du site (`mainteneurs`) et les faces 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-comptes montre ce qui serait fait # make forge-comptes CONFIRMER=true l'ecrit, puis relit - name: Les comptes de la forge du site hosts: serveur_ops_site gather_facts: false become: true become_user: "{{ serveur_ops_utilisateur | default('setops') }}" vars: forge_comptes_racine: "{{ serveur_ops_racine | default('/opt/setops') }}" forge_comptes_moteur: "{{ (serveur_ops_depots | selectattr('role', 'eq', 'moteur') | first).dest }}" forge_comptes_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 le plan du site aux comptes de la forge ansible.builtin.command: argv: "{{ ['python3', 'scripts/forge_comptes.py'] + (['--confirmer'] if (forge_comptes_confirmer | bool) else []) }}" chdir: "{{ forge_comptes_racine }}/{{ forge_comptes_moteur }}" environment: FORGEJO_ADMIN: "{{ vault_forgejo_admin }}" PATH: "{{ forge_comptes_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_comptes # LES LIGNES D'ACTION, PAS DES MOTS : « jeton a creer », dans le plan, contient « jeton » # et faisait compter un changement alors que rien n'etait ecrit (2026-10-11). changed_when: forge_comptes.stdout is search('(?m)^ (cree|collab|retire|equipe|jeton) ') # 1 = un ecart DIT (un courriel a remplir, par exemple) : il s'affiche, il n'empeche pas # le reste. 2 = le script a refuse de travailler. failed_when: forge_comptes.rc not in [0, 1] - name: Ce que la forge porte ansible.builtin.debug: msg: "{{ forge_comptes.stdout_lines }}"