serveur_ops : la liste hors ligne des collections porte les vraies versions
Le requirements.yml genere portait version: \1 (regex_replace dans un bloc YAML) ; ansible-galaxy refusait, et la reprise de la reconstruction de Technolibre s'est arretee apres avoir pris roues et collections au site. Version tiree du nom par decoupage, sans expression reguliere ; rejoue sur le poste, les trois collections s'installent hors ligne. test_verrou_runner.py rend desormais le fichier avec Jinja2 et compare. 94 preuves. CHANGELOG (121). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
422b68846b
commit
34e961fb61
3 changed files with 25 additions and 1 deletions
10
CHANGELOG.md
10
CHANGELOG.md
|
|
@ -65,6 +65,16 @@ collections) sont désormais assurés avant la copie, et `test_verrou_runner.py`
|
|||
toute copie fichier par fichier, que son dossier soit créé avant (témoin : l'ancien code
|
||||
échoue sur les deux copies).
|
||||
|
||||
Reprise sur `422b688`, 11:25 : les roues déposées, Ansible et les bibliothèques installés
|
||||
hors ligne, les 3 collections prises **au site** (repli sauté) ; puis `ansible-galaxy` refuse :
|
||||
« Non integer values in LooseVersion ('\1') ». Le `requirements.yml` généré portait
|
||||
`version: \1` : dans un bloc `|`, le `'\\1'` de `regex_replace` garde ses deux barres
|
||||
obliques inverses, et le remplacement rend un `\1` littéral. Rejoué sur le poste, la tâche
|
||||
du rôle telle quelle rend trois `\1` ; remplacée par un découpage sans expression régulière (`replace('.tar.gz', '')` puis `split('-') | last`),
|
||||
elle rend `1.6.2`, `10.3.0`, `3.10.2`, et `ansible-galaxy collection install` installe les
|
||||
trois archives (sommes du verrou vérifiées). Le test vérifiait le modèle, jamais le fichier :
|
||||
il **rend** désormais la liste avec Jinja2 et compare ses versions à `requirements.yml`.
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -493,7 +493,7 @@
|
|||
collections:
|
||||
{% for c in serveur_ops_verrou.collections %}
|
||||
- name: {{ c.nom }}
|
||||
version: {{ c.nom | regex_replace('^.*-([0-9][^-]*)[.]tar[.]gz$', '\\1') }}
|
||||
version: {{ (c.nom | replace('.tar.gz', '')).split('-') | last }}
|
||||
{% endfor %}
|
||||
when: not ansible_check_mode
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import re
|
|||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import jinja2
|
||||
import yaml
|
||||
|
||||
RACINE = Path(__file__).resolve().parents[2]
|
||||
|
|
@ -80,6 +81,19 @@ def main() -> int:
|
|||
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})")
|
||||
# LE FICHIER RENDU, PAS LE MODELE (2026-10-09). `'\\1'` dans un bloc `|` restait `\1` :
|
||||
# `ansible-galaxy` refusait « Non integer values in LooseVersion ('\1') », et la
|
||||
# reconstruction de Technolibre s'est arretee. Rendu ici avec Jinja2 seul, comme le runner.
|
||||
tache = next(t for t in yaml.safe_load((RACINE / "roles/serveur_ops/tasks/main.yml").read_text())
|
||||
if t.get("name") == "Ecrire la liste hors ligne des collections du verrou")
|
||||
try:
|
||||
rendu = yaml.safe_load(jinja2.Template(tache["ansible.builtin.copy"]["content"]).render(
|
||||
serveur_ops_verrou={"collections": colls}))["collections"]
|
||||
obtenues = sorted(f"{c['name']}={c['version']}" for c in rendu)
|
||||
except Exception as e: # un filtre propre a Ansible, une syntaxe cassee : c'est un echec
|
||||
obtenues = [f"rendu impossible : {e}"]
|
||||
voulues = sorted(f"{c['name'].replace('.', '-')}-{c['version']}.tar.gz={c['version']}" for c in req)
|
||||
verifier(obtenues == voulues, f"la liste hors ligne rendue porte les vraies versions ({obtenues})")
|
||||
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