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 }}"