From a0dc3da4a6a06adc3d0c65e520a5fcbaef9b132d Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Sun, 9 Aug 2026 14:05:25 -0400 Subject: [PATCH] =?UTF-8?q?get=5Furl=20:=20plus=20aucun=20sans=20garde=20?= =?UTF-8?q?=E2=80=94=20la=20dependance=20externe=20tombe=20a=20zero?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Arbitrage de l'exploitant : garder aussi les cles de signature. Zero get_url sans garde dans le depot, contre neuf ce matin. Avant : 6 serveurs tiers x 14 hotes recontactes a chaque deploiement. Apres : zero. Un deploiement de flotte ne depend plus d'aucun serveur etranger pour ce que la machine possede deja. Consequence assumee et ecrite dans chaque role : une rotation de cle amont n'est plus recuperee seule. Elle ne passe pas inapercue pour autant — apt refuse le depot, bruyamment — et le remede tient en une ligne. C'est un defaut SONORE, pas silencieux ; toute la journee a consiste a transformer les seconds en premiers. Verifie sur backup-01 : changed=0, trois taches sautees. Reste a eprouver sur un hote neuf, ou la garde doit laisser passer le telechargement. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 24 ++++++++++++++++++++++++ roles/client_journal/tasks/main.yml | 15 +++++++++++++++ roles/client_pki/tasks/main.yml | 15 +++++++++++++++ roles/serveur_grafana/tasks/main.yml | 15 +++++++++++++++ roles/serveur_icinga/tasks/main.yml | 15 +++++++++++++++ roles/serveur_loki/tasks/main.yml | 15 +++++++++++++++ roles/serveur_step_ca/tasks/main.yml | 15 +++++++++++++++ 7 files changed, 114 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6927394..205087c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,29 @@ # CHANGELOG — Set-OPS +## 2026-08-09 — Plus aucun `get_url` sans garde : la dépendance externe est comptée + +Arbitrage rendu par l'exploitant : garder aussi les clés de signature. **Zéro `get_url` +sans garde** dans le dépôt, contre neuf ce matin. + +``` +avant : 6 serveurs tiers x 14 hotes recontactes a chaque deploiement +apres : 0 +``` + +**Conséquence assumée, écrite dans chaque rôle** : une rotation de clé amont n'est plus +récupérée toute seule. Elle ne passe pas inaperçue pour autant — `apt` refuse alors le +dépôt, bruyamment, et le remède est d'une ligne : supprimer le fichier et rejouer le rôle. +C'est un défaut *sonore*, pas un défaut silencieux ; toute la journée a consisté à +transformer les seconds en premiers. + +Ce que ça change vraiment : un déploiement de flotte ne dépend plus d'aucun serveur +étranger pour ce que la machine possède déjà. La question posée le matin — *combien de +serveurs tiers doivent être joignables pour redéployer ce que l'on possède ?* — a +maintenant une réponse mesurée, et c'est **zéro**. + +Reste à éprouver sur un rejeu depuis zéro : sur un hôte neuf le fichier n'existe pas, donc +la garde laisse passer le téléchargement. Correct par construction, pas encore mesuré. + ## 2026-08-09 — Dépendances externes sur le chemin critique du déploiement Le passage d'idempotence a échoué sur `Telecharger le binaire Forgejo` : diff --git a/roles/client_journal/tasks/main.yml b/roles/client_journal/tasks/main.yml index 58145bf..b69e943 100644 --- a/roles/client_journal/tasks/main.yml +++ b/roles/client_journal/tasks/main.yml @@ -7,7 +7,22 @@ group: root mode: "0755" +# Recuperee UNE FOIS. Sans garde, chaque deploiement recontactait le serveur du +# fournisseur : cinq cles x quatorze hotes = soixante-dix allers-retours externes pour +# des cles deja installees, et autant d'occasions qu'un tiers lent fasse tomber le +# deploiement. Arbitrage rendu le 2026-08-09 : une plateforme souveraine ne depend pas +# de six serveurs etrangers pour redeployer ce qu'elle possede deja. +# +# CONSEQUENCE ASSUMEE : une rotation de cle amont n'est plus recuperee toute seule. Elle +# ne passe pas inapercue pour autant — `apt` refuse alors le depot, bruyamment. Pour +# forcer le rafraichissement : supprimer le fichier et rejouer le role. +- name: Cette ressource est-elle deja recuperee ? (Telecharger la cle de signature Gr) + ansible.builtin.stat: + path: "{{ client_journal_depot_cle_fichier }}" + register: telecharger_la_cle_de_signature_grafana_present + - name: Telecharger la cle de signature Grafana + when: not telecharger_la_cle_de_signature_grafana_present.stat.exists ansible.builtin.get_url: url: "{{ client_journal_depot_cle_url }}" dest: "{{ client_journal_depot_cle_fichier }}" diff --git a/roles/client_pki/tasks/main.yml b/roles/client_pki/tasks/main.yml index 5847907..a5b86e3 100644 --- a/roles/client_pki/tasks/main.yml +++ b/roles/client_pki/tasks/main.yml @@ -31,7 +31,22 @@ group: root mode: "0755" +# Recuperee UNE FOIS. Sans garde, chaque deploiement recontactait le serveur du +# fournisseur : cinq cles x quatorze hotes = soixante-dix allers-retours externes pour +# des cles deja installees, et autant d'occasions qu'un tiers lent fasse tomber le +# deploiement. Arbitrage rendu le 2026-08-09 : une plateforme souveraine ne depend pas +# de six serveurs etrangers pour redeployer ce qu'elle possede deja. +# +# CONSEQUENCE ASSUMEE : une rotation de cle amont n'est plus recuperee toute seule. Elle +# ne passe pas inapercue pour autant — `apt` refuse alors le depot, bruyamment. Pour +# forcer le rafraichissement : supprimer le fichier et rejouer le role. +- name: Cette ressource est-elle deja recuperee ? (Telecharger la cle de signature Sm) + ansible.builtin.stat: + path: "{{ client_pki_depot_cle_fichier }}" + register: telecharger_la_cle_de_signature_smallste_present + - name: Telecharger la cle de signature Smallstep + when: not telecharger_la_cle_de_signature_smallste_present.stat.exists ansible.builtin.get_url: url: "{{ client_pki_depot_cle_url }}" dest: "{{ client_pki_depot_cle_fichier }}" diff --git a/roles/serveur_grafana/tasks/main.yml b/roles/serveur_grafana/tasks/main.yml index 6ff2a2d..9faf7c5 100644 --- a/roles/serveur_grafana/tasks/main.yml +++ b/roles/serveur_grafana/tasks/main.yml @@ -21,7 +21,22 @@ group: root mode: "0755" +# Recuperee UNE FOIS. Sans garde, chaque deploiement recontactait le serveur du +# fournisseur : cinq cles x quatorze hotes = soixante-dix allers-retours externes pour +# des cles deja installees, et autant d'occasions qu'un tiers lent fasse tomber le +# deploiement. Arbitrage rendu le 2026-08-09 : une plateforme souveraine ne depend pas +# de six serveurs etrangers pour redeployer ce qu'elle possede deja. +# +# CONSEQUENCE ASSUMEE : une rotation de cle amont n'est plus recuperee toute seule. Elle +# ne passe pas inapercue pour autant — `apt` refuse alors le depot, bruyamment. Pour +# forcer le rafraichissement : supprimer le fichier et rejouer le role. +- name: Cette ressource est-elle deja recuperee ? (Telecharger la cle de signature Gr) + ansible.builtin.stat: + path: "{{ serveur_grafana_depot_cle_fichier }}" + register: telecharger_la_cle_de_signature_grafana_present + - name: Telecharger la cle de signature Grafana + when: not telecharger_la_cle_de_signature_grafana_present.stat.exists ansible.builtin.get_url: url: "{{ serveur_grafana_depot_cle_url }}" dest: "{{ serveur_grafana_depot_cle_fichier }}" diff --git a/roles/serveur_icinga/tasks/main.yml b/roles/serveur_icinga/tasks/main.yml index 211f0e4..d80e56f 100644 --- a/roles/serveur_icinga/tasks/main.yml +++ b/roles/serveur_icinga/tasks/main.yml @@ -1,5 +1,20 @@ --- +# Recuperee UNE FOIS. Sans garde, chaque deploiement recontactait le serveur du +# fournisseur : cinq cles x quatorze hotes = soixante-dix allers-retours externes pour +# des cles deja installees, et autant d'occasions qu'un tiers lent fasse tomber le +# deploiement. Arbitrage rendu le 2026-08-09 : une plateforme souveraine ne depend pas +# de six serveurs etrangers pour redeployer ce qu'elle possede deja. +# +# CONSEQUENCE ASSUMEE : une rotation de cle amont n'est plus recuperee toute seule. Elle +# ne passe pas inapercue pour autant — `apt` refuse alors le depot, bruyamment. Pour +# forcer le rafraichissement : supprimer le fichier et rejouer le role. +- name: Cette ressource est-elle deja recuperee ? (Telecharger le trousseau de cles I) + ansible.builtin.stat: + path: "/tmp/icinga-archive-keyring.deb" + register: telecharger_le_trousseau_de_cles_icinga_present + - name: Telecharger le trousseau de cles Icinga + when: not telecharger_le_trousseau_de_cles_icinga_present.stat.exists ansible.builtin.get_url: url: "{{ serveur_icinga_keyring_url }}" dest: "/tmp/icinga-archive-keyring.deb" diff --git a/roles/serveur_loki/tasks/main.yml b/roles/serveur_loki/tasks/main.yml index d01c8ba..178d76f 100644 --- a/roles/serveur_loki/tasks/main.yml +++ b/roles/serveur_loki/tasks/main.yml @@ -7,7 +7,22 @@ group: root mode: "0755" +# Recuperee UNE FOIS. Sans garde, chaque deploiement recontactait le serveur du +# fournisseur : cinq cles x quatorze hotes = soixante-dix allers-retours externes pour +# des cles deja installees, et autant d'occasions qu'un tiers lent fasse tomber le +# deploiement. Arbitrage rendu le 2026-08-09 : une plateforme souveraine ne depend pas +# de six serveurs etrangers pour redeployer ce qu'elle possede deja. +# +# CONSEQUENCE ASSUMEE : une rotation de cle amont n'est plus recuperee toute seule. Elle +# ne passe pas inapercue pour autant — `apt` refuse alors le depot, bruyamment. Pour +# forcer le rafraichissement : supprimer le fichier et rejouer le role. +- name: Cette ressource est-elle deja recuperee ? (Telecharger la cle de signature Gr) + ansible.builtin.stat: + path: "{{ serveur_loki_depot_cle_fichier }}" + register: telecharger_la_cle_de_signature_grafana_present + - name: Telecharger la cle de signature Grafana + when: not telecharger_la_cle_de_signature_grafana_present.stat.exists ansible.builtin.get_url: url: "{{ serveur_loki_depot_cle_url }}" dest: "{{ serveur_loki_depot_cle_fichier }}" diff --git a/roles/serveur_step_ca/tasks/main.yml b/roles/serveur_step_ca/tasks/main.yml index 61ce7b6..37d1eb4 100644 --- a/roles/serveur_step_ca/tasks/main.yml +++ b/roles/serveur_step_ca/tasks/main.yml @@ -16,7 +16,22 @@ group: root mode: "0755" +# Recuperee UNE FOIS. Sans garde, chaque deploiement recontactait le serveur du +# fournisseur : cinq cles x quatorze hotes = soixante-dix allers-retours externes pour +# des cles deja installees, et autant d'occasions qu'un tiers lent fasse tomber le +# deploiement. Arbitrage rendu le 2026-08-09 : une plateforme souveraine ne depend pas +# de six serveurs etrangers pour redeployer ce qu'elle possede deja. +# +# CONSEQUENCE ASSUMEE : une rotation de cle amont n'est plus recuperee toute seule. Elle +# ne passe pas inapercue pour autant — `apt` refuse alors le depot, bruyamment. Pour +# forcer le rafraichissement : supprimer le fichier et rejouer le role. +- name: Cette ressource est-elle deja recuperee ? (Telecharger la cle de signature Sm) + ansible.builtin.stat: + path: "{{ serveur_step_ca_depot_cle_fichier }}" + register: telecharger_la_cle_de_signature_smallste_present + - name: Telecharger la cle de signature Smallstep + when: not telecharger_la_cle_de_signature_smallste_present.stat.exists ansible.builtin.get_url: url: "{{ serveur_step_ca_depot_cle_url }}" dest: "{{ serveur_step_ca_depot_cle_fichier }}"