diff --git a/CHANGELOG.md b/CHANGELOG.md index c64fe7d..6927394 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,34 @@ # CHANGELOG — Set-OPS +## 2026-08-09 — Dépendances externes sur le chemin critique du déploiement + +Le passage d'idempotence a échoué sur `Telecharger le binaire Forgejo` : +« Connection failure: The read operation timed out » — pour **106 Mo déjà présents** sur la +machine. Un déploiement de flotte tombait parce qu'un serveur tiers était lent. + +Recensement de tous les `get_url` du dépôt : **9 sans aucune garde** (ni `checksum`, ni +condition d'existence), 1 avec. + +| Nature | Rôles | Traitement | +|---|---|---| +| artefact **épinglé à une version** | forgejo, keycloak, nextcloud, oauth2-proxy | **gardé** | +| **clé de signature** de dépôt apt | client_journal, client_pki, grafana, loki, step_ca | *à arbitrer* | +| trousseau `.deb` | icinga | *à arbitrer* | + +Les quatre premiers sont immuables **par construction** : leur chemin de destination porte +la version. `forgejo-10.0.0` ne peut pas désigner un autre contenu demain. Les +retélécharger n'a aucun sens, et les recontacter encore moins. + +**Ce qui reste à trancher, et ce n'est pas à moi.** Cinq rôles récupèrent une clé de +signature apt à chaque passage — cinq serveurs externes × quatorze hôtes, soit **soixante-dix +allers-retours par déploiement**. Les garder par existence supprimerait cette dépendance, +au prix de ne plus détecter une rotation de clé. L'argument contraire : une clé tournée +casse `apt` bruyamment, donc l'oubli se voit. + +Sur une plateforme qui se veut souveraine, la question mérite d'être posée explicitement : +**combien de serveurs tiers doivent être joignables pour redéployer ce que l'on possède +déjà ?** + ## 2026-08-09 — Reconstruction complète d'un seul trait, et une correction que je me dois **Deuxième reconstruction from-zero : zéro échec, zéro injoignable, sur les quatorze diff --git a/roles/serveur_keycloak/tasks/main.yml b/roles/serveur_keycloak/tasks/main.yml index 1f3268d..e4099ec 100644 --- a/roles/serveur_keycloak/tasks/main.yml +++ b/roles/serveur_keycloak/tasks/main.yml @@ -76,7 +76,17 @@ group: "{{ serveur_keycloak_utilisateur }}" mode: "0750" +# Le chemin de destination PORTE la version : cet artefact est immuable une fois pose. +# Sans garde, `get_url` recontacte le serveur distant a CHAQUE deploiement — et un +# serveur tiers lent suffit alors a faire tomber un deploiement de flotte. Constate le +# 2026-08-09 sur le binaire Forgejo, meme motif ici. +- name: L artefact de cette version est-il deja pose ? + ansible.builtin.stat: + path: "/tmp/keycloak-{{ serveur_keycloak_version }}.tar.gz" + register: serveur_keycloak_archive_present + - name: Telecharger la distribution Keycloak + when: not serveur_keycloak_archive_present.stat.exists ansible.builtin.get_url: url: "{{ serveur_keycloak_url }}" dest: "/tmp/keycloak-{{ serveur_keycloak_version }}.tar.gz" diff --git a/roles/serveur_nextcloud/tasks/installer.yml b/roles/serveur_nextcloud/tasks/installer.yml index 0fdf7bc..13b7ba4 100644 --- a/roles/serveur_nextcloud/tasks/installer.yml +++ b/roles/serveur_nextcloud/tasks/installer.yml @@ -1,5 +1,15 @@ --- +# Le chemin de destination PORTE la version : cet artefact est immuable une fois pose. +# Sans garde, `get_url` recontacte le serveur distant a CHAQUE deploiement — et un +# serveur tiers lent suffit alors a faire tomber un deploiement de flotte. Constate le +# 2026-08-09 sur le binaire Forgejo, meme motif ici. +- name: L artefact de cette version est-il deja pose ? + ansible.builtin.stat: + path: "/tmp/nextcloud-{{ serveur_nextcloud_version }}.tar.bz2" + register: serveur_nextcloud_archive_present + - name: Telecharger le tarball Nextcloud (version epinglee) + when: not serveur_nextcloud_archive_present.stat.exists ansible.builtin.get_url: url: "{{ serveur_nextcloud_url }}" dest: "/tmp/nextcloud-{{ serveur_nextcloud_version }}.tar.bz2" diff --git a/roles/serveur_oauth2_proxy/tasks/main.yml b/roles/serveur_oauth2_proxy/tasks/main.yml index 0f7c8e5..85f9014 100644 --- a/roles/serveur_oauth2_proxy/tasks/main.yml +++ b/roles/serveur_oauth2_proxy/tasks/main.yml @@ -54,7 +54,17 @@ shell: /usr/sbin/nologin create_home: false +# Le chemin de destination PORTE la version : cet artefact est immuable une fois pose. +# Sans garde, `get_url` recontacte le serveur distant a CHAQUE deploiement — et un +# serveur tiers lent suffit alors a faire tomber un deploiement de flotte. Constate le +# 2026-08-09 sur le binaire Forgejo, meme motif ici. +- name: L artefact de cette version est-il deja pose ? + ansible.builtin.stat: + path: "/tmp/oauth2-proxy-{{ serveur_oauth2_proxy_version }}.tar.gz" + register: serveur_oauth2_proxy_archive_present + - name: Télécharger oauth2-proxy + when: not serveur_oauth2_proxy_archive_present.stat.exists ansible.builtin.get_url: url: "{{ serveur_oauth2_proxy_url }}" dest: "/tmp/oauth2-proxy-{{ serveur_oauth2_proxy_version }}.tar.gz"