serveur_ops : creer les depots de roues et de collections avant la copie
La copie fichier par fichier du verrou ne cree pas son dossier, contrairement a l'ancienne copie du cache entier. La reconstruction de Technolibre s'est arretee a l'insemination sur un runner neuf (roues bien prises au site). test_verrou_runner.py exige desormais que chaque dossier vise soit cree avant. CHANGELOG (121) : l'arret, et le blocage site-pki-01 -> 10.37.32.1:8006 vu a la frontiere, qui est la sonde de connectivite (resultat attendu). 94 preuves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
55f42add15
commit
422b68846b
3 changed files with 49 additions and 2 deletions
20
CHANGELOG.md
20
CHANGELOG.md
|
|
@ -54,10 +54,26 @@ pourtant les 15 roues « absentes du dépôt du site » : `--check` ne télécha
|
|||
du contrôleur reste vide, et le message accusait le dépôt à tort. Les deux messages se taisent
|
||||
désormais en simulation.
|
||||
|
||||
### La reconstruction de Technolibre s'arrête à l'insémination
|
||||
|
||||
Sur `55f42ad`, à 10:45 : les 15 roues sont bien prises **au dépôt du site** (repli sauté),
|
||||
puis « Destination directory /opt/setops/.roues-hors-ligne does not exist ». L'ancienne
|
||||
copie du cache entier (`src: dossier/`) créait sa destination ; la copie fichier par fichier
|
||||
du verrou ne la crée pas. La simulation sur l'ancien `ops-01` ne pouvait pas le voir : le
|
||||
dossier y existait, et les copies sont sautées en `--check`. Les deux dossiers (roues,
|
||||
collections) sont désormais assurés avant la copie, et `test_verrou_runner.py` exige, pour
|
||||
toute copie fichier par fichier, que son dossier soit créé avant (témoin : l'ancien code
|
||||
échoue sur les deux copies).
|
||||
|
||||
Vu dans le même temps à la frontière : `site-pki-01` → `10.37.32.1:8006` bloqué, environ
|
||||
1 270 fois par jour depuis au moins le 2026-10-07. C'est la sonde de connectivité
|
||||
(`nftables_baseline`, entrée du 2026-10-05) qui vérifie chaque minute que la passerelle ne
|
||||
répond **pas** sur l'API Proxmox ; le blocage est le résultat attendu.
|
||||
|
||||
### Pas encore fait
|
||||
|
||||
Reconstruire les deux locataires sur ce code, pour prouver qu'aucun montage ne sort vers
|
||||
PyPI ni Galaxy.
|
||||
Reprendre la reconstruction de Technolibre (`DEPUIS=inseminer`), puis Chezlepro, pour prouver
|
||||
qu'aucun montage ne sort vers PyPI ni Galaxy.
|
||||
|
||||
## 2026-10-09 (120) — Chezlepro reconstruite sur `3afb756` : les deux locataires sur le même commit
|
||||
|
||||
|
|
|
|||
|
|
@ -201,6 +201,18 @@
|
|||
# LES ROUES DU VERROU, ET ELLES SEULES. Copier le cache entier deposait aussi les versions
|
||||
# d'hier (deux `cryptography`, deux `urllib3`...) ; `--no-index` choisissait alors la plus
|
||||
# haute, que personne n'avait choisie.
|
||||
# LE DOSSIER D'ABORD (2026-10-09). L'ancienne copie du cache ENTIER (`src: dossier/`) creait
|
||||
# sa destination ; une copie fichier par fichier ne la cree pas. Sur un runner neuf, la
|
||||
# reconstruction de Technolibre s'est arretee la (« Destination directory … does not exist »)
|
||||
# — invisible en simulant sur un runner ou le dossier existait deja.
|
||||
- name: Assurer le depot des roues sur le runner
|
||||
ansible.builtin.file:
|
||||
path: "{{ serveur_ops_roues_depot }}"
|
||||
state: directory
|
||||
owner: "{{ serveur_ops_utilisateur }}"
|
||||
group: "{{ serveur_ops_utilisateur }}"
|
||||
mode: "0755"
|
||||
|
||||
- name: Deposer sur le runner les roues du verrou
|
||||
ansible.builtin.copy:
|
||||
src: "{{ serveur_ops_cache_roues }}/{{ item.nom }}"
|
||||
|
|
@ -446,6 +458,14 @@
|
|||
- not ansible_check_mode
|
||||
- not item.stat.exists or item.stat.checksum != item.item.sha256
|
||||
|
||||
- name: Assurer le depot des collections sur le runner
|
||||
ansible.builtin.file:
|
||||
path: "{{ serveur_ops_racine }}/.collections-hors-ligne"
|
||||
state: directory
|
||||
owner: "{{ serveur_ops_utilisateur }}"
|
||||
group: "{{ serveur_ops_utilisateur }}"
|
||||
mode: "0755"
|
||||
|
||||
- name: Deposer sur le poste les collections du verrou
|
||||
register: serveur_ops_depot_collections
|
||||
ansible.builtin.copy:
|
||||
|
|
|
|||
|
|
@ -69,6 +69,17 @@ def main() -> int:
|
|||
texte = "\n".join(taches)
|
||||
verifier('"download"' not in texte and "collection download" not in texte,
|
||||
"plus aucune resolution contre PyPI ou Galaxy dans serveur_ops (pip / collection download)")
|
||||
# Une copie fichier par fichier ne cree pas son dossier (2026-10-09 : reconstruction de
|
||||
# Technolibre arretee sur un runner neuf). Chaque dossier vise doit etre assure AVANT.
|
||||
assures: set[str] = set()
|
||||
for t in yaml.safe_load((RACINE / "roles/serveur_ops/tasks/main.yml").read_text()):
|
||||
f = t.get("ansible.builtin.file") or {}
|
||||
if f.get("state") == "directory":
|
||||
assures.add(f["path"])
|
||||
c = t.get("ansible.builtin.copy") or {}
|
||||
if str(c.get("dest", "")).endswith("/{{ item.nom }}"):
|
||||
dossier = c["dest"].rsplit("/", 1)[0]
|
||||
verifier(dossier in assures, f"« {t['name']} » : son dossier est cree avant ({dossier})")
|
||||
verifier("verrou-runner.yml" in (RACINE / "roles/serveur_artefacts/tasks/main.yml").read_text(),
|
||||
"le site tient le verrou du runner")
|
||||
if ECHECS:
|
||||
|
|
|
|||
Loading…
Reference in a new issue