get_url : garder les artefacts epingles a une version
Recensement apres l'echec du passage d'idempotence : 9 get_url sans aucune garde, 1 avec. Les quatre artefacts epingles (forgejo, keycloak, nextcloud, oauth2-proxy) sont immuables PAR CONSTRUCTION — leur chemin de destination porte la version. Les retelecharger n'a aucun sens, les recontacter encore moins. Gardes par une verification d'existence. Restent cinq cles de signature apt et un trousseau .deb, recuperes a chaque passage : cinq serveurs externes x quatorze hotes = 70 allers-retours par deploiement. Les garder supprimerait la dependance au prix de ne plus detecter une rotation ; une cle tournee casse apt bruyamment, donc l'oubli se voit. Arbitrage a rendre — pas a moi. Sur une plateforme souveraine la question merite d'etre posee : combien de serveurs tiers doivent etre joignables pour redeployer ce qu'on possede deja ? Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
2ec9cec76a
commit
26dc0469be
4 changed files with 59 additions and 0 deletions
29
CHANGELOG.md
29
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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Reference in a new issue