forgejo : verifier l'etat du compte, ne pas faire confiance au drapeau
Toute l'API rendait 403 — ni 401, ni message de droits : jeton valide, identite reconnue, requete rejetee. La cause etait `must-change-password` sur le compte d'administration. Le role passait DEJA `--must-change-password=false`, corrige le 2026-08-23 sur la premiere forge de patient 0. Forgejo 16 a ignore l'option : le compte de la forge du SITE est ne avec le drapeau pose malgre elle. La correction d'il y a deux jours ne protegeait plus rien, et rien ne le disait. Le role ne demande donc plus a la creation de bien se comporter : il CONSTATE l'etat voulu et le retablit, par une tache idempotente sans effet quand la creation a tenu parole. Le genome vit desormais sur la forge du site : six depots, 606 commits, chaque tete confrontee entre le poste et la forge — identique. L'ancienne forge reste comme second remote : « une famille, pas un maitre ». 42 preuves vertes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
43666cff6e
commit
b60946f19f
2 changed files with 57 additions and 0 deletions
29
CHANGELOG.md
29
CHANGELOG.md
|
|
@ -1,5 +1,34 @@
|
|||
# CHANGELOG — Set-OPS
|
||||
|
||||
## 2026-08-25 — Le génome vit sur la forge du SITE
|
||||
|
||||
Six dépôts, 606 commits, chaque tête confrontée entre le poste et la forge : **identique**.
|
||||
Le génome ne dépend plus d'un écosystème pour se reproduire.
|
||||
|
||||
L'ancienne forge de patient 0 devient un second remote, nommé `patient0` — elle n'est pas
|
||||
remplacée. Le README de patient 0 exige que le génome vive en **au moins trois endroits
|
||||
sans coordination** : *« n'importe quel survivant réamorce les autres. Une famille, pas un
|
||||
maître. »* La forge du site en fait un quatrième.
|
||||
|
||||
### On vérifie l'état, on ne fait pas confiance au drapeau
|
||||
|
||||
Toute l'API de la forge rendait **403**. Ni 401, ni un message de droits : jeton valide,
|
||||
identité reconnue, requête rejetée. On cherche un scope, une politique, une capacité — et
|
||||
la cause est un drapeau sur le compte, `must-change-password`.
|
||||
|
||||
Le rôle passait pourtant **déjà** `--must-change-password=false`, corrigé le 2026-08-23
|
||||
sur la première forge de patient 0. **Forgejo 16 a ignoré l'option** : le compte est né
|
||||
avec le drapeau posé malgré elle. La correction d'il y a deux jours ne protégeait plus
|
||||
rien, et rien ne le disait.
|
||||
|
||||
D'où la forme du remède : le rôle ne demande plus à la création de bien se comporter, il
|
||||
**constate l'état voulu et le rétablit** — une tâche idempotente, sans effet quand la
|
||||
création a tenu parole. C'est la même leçon que le `changed=` d'Ansible qui ne prouve pas
|
||||
un service : *vérifier l'état, pas l'intention*.
|
||||
|
||||
Le jeton d'amorçage est créé localement par la CLI : un mot de passe d'administrateur n'a
|
||||
pas à circuler pour créer six dépôts.
|
||||
|
||||
## 2026-08-25 — Un SITE a bien un plan
|
||||
|
||||
J'ai passé la journée à répéter qu'un SITE n'est pas un plan. **C'était faux**, et le
|
||||
|
|
|
|||
|
|
@ -323,6 +323,34 @@
|
|||
GITEA_WORK_DIR: "{{ serveur_forgejo_data }}"
|
||||
no_log: true
|
||||
|
||||
# ON VERIFIE L'ETAT, ON NE FAIT PAS CONFIANCE AU DRAPEAU (2026-08-25).
|
||||
#
|
||||
# La creation passe deja `--must-change-password=false` — corrige le 2026-08-23, sur la
|
||||
# premiere forge de patient 0. **Forgejo 16 l'a ignore** : le compte de la forge du SITE
|
||||
# est ne avec le drapeau POSE malgre l'option.
|
||||
#
|
||||
# La panne qui en resulte n'accuse rien de juste : toute requete d'API rend **403**, pas
|
||||
# 401. Le jeton est valide, l'identite reconnue, la requete rejetee quand meme — on
|
||||
# cherche un scope, un droit, une politique, et la cause est un drapeau sur le compte.
|
||||
#
|
||||
# D'ou cette tache : elle ne demande pas a la creation de bien se comporter, elle CONSTATE
|
||||
# l'etat voulu et le retablit. Idempotente, et sans effet quand la creation a tenu parole.
|
||||
- name: Le compte d'administration ne doit exiger aucun changement de mot de passe
|
||||
ansible.builtin.command:
|
||||
cmd: >-
|
||||
{{ serveur_forgejo_binaire }} admin user must-change-password --unset
|
||||
{{ serveur_forgejo_admin_user }}
|
||||
--config {{ serveur_forgejo_config }}
|
||||
become: true
|
||||
become_user: "{{ serveur_forgejo_utilisateur }}"
|
||||
environment:
|
||||
FORGEJO_WORK_DIR: "{{ serveur_forgejo_data }}"
|
||||
register: forgejo_mcp
|
||||
changed_when: "'Updated 1 users' in (forgejo_mcp.stdout | default(''))"
|
||||
failed_when:
|
||||
- forgejo_mcp.rc != 0
|
||||
- "'not found' not in (forgejo_mcp.stderr | default(''))"
|
||||
|
||||
- name: Configurer la source OAuth2 SSO (Keycloak, idempotent)
|
||||
ansible.builtin.shell:
|
||||
executable: /bin/bash
|
||||
|
|
|
|||
Loading…
Reference in a new issue