Some checks are pending
verifier / verifier (push) Waiting to run
Il portait DIX-SEPT roles : exactement ceux du socle et du durcissement, que le
deploiement rejoue a l identique. C etait donc un CACHE — et comme tout cache, il
perimait sans le dire.
MESURE : derniere recapture le 2026-08-09, et SIX de ses roles avaient change depuis
— common_packages, cloud_init, ssh_baseline, ssh_hardening, auditd,
nftables_baseline. Rien ne le signalait : le deploiement masquait la derive en
reappliquant tout, donc personne ne pouvait la voir. Aucune preuve du harnais ne
regardait sa fraicheur.
IL NE GARDE QUE CE QUI DOIT EXISTER AVANT QU ANSIBLE PUISSE AGIR :
qemu_guest_agent l agent repond AVANT SSH — P52 s en sert
cloud_init le seul chemin vers la premiere seconde
sudo_ansible la porte par ou tout entre
ssh_baseline le serveur SSH
Ce ne sont pas des choix d efficacite, ce sont des conditions d existence.
CE QUE CA COUTE, ET QUI EST COUVERT : une VM neuve n est plus durcie a la naissance.
Elle nait cependant DERRIERE LE PARE-FEU DE L HYPERVISEUR, policy_in=REJECT arme au
clonage — verifie sur obs-01. La fenetre d exposition est fermee par la fabric, pas
par le gabarit. Mon objection initiale tombait devant la mesure.
P56 GARDE LES DEUX MOITIES. Qu il ne REGROSSISSE pas : un role ajoute recree le
cache, donc la peremption invisible. Et que rien de retire ne soit PERDU : un role
absent du gabarit ET du socle disparaitrait de toutes les machines neuves, sans
erreur ni trace, et la panne arriverait des mois plus tard sur une machine qu on
croyait durcie. Verifie : 14 retires, 14 repris, zero orphelin. Deux controles
negatifs.
make verifier : vert. make prouver : CONFORME, 56 OK, 0 echec.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
59 lines
3 KiB
YAML
59 lines
3 KiB
YAML
---
|
|
- name: Préparer le template Debian 13 Proxmox
|
|
# Le gabarit n'est pas un hote du tenant : son adresse vit sur le reseau de
|
|
# fabrication, donc il ne peut pas venir du plan et le groupe `modeles_vm` reste vide.
|
|
# `MODELE_HOTE` passe alors `cible_modele`, et l'inventaire d'un seul hote (`-i "<ip>,"`)
|
|
# place la machine dans `all` — PAS dans `modeles_vm`. Sans cette indirection, la
|
|
# commande etait juste et la cible introuvable : « skipping: no hosts matched ».
|
|
hosts: "{{ cible_modele | default('modeles_vm') }}"
|
|
become: true
|
|
gather_facts: true
|
|
|
|
pre_tasks:
|
|
- name: Vérifier que la cible est Debian
|
|
ansible.builtin.assert:
|
|
that:
|
|
- ansible_facts.distribution == "Debian"
|
|
fail_msg: "Ce playbook est prévu pour Debian."
|
|
|
|
- name: Avertir si la version Debian n'est pas 13
|
|
ansible.builtin.debug:
|
|
msg: "Attention : Debian {{ ansible_facts.distribution_version }} détecté. Le modèle cible est Debian 13."
|
|
when: ansible_facts.distribution_major_version != "13"
|
|
|
|
# ─── LE GABARIT EST MINIMAL, ET C'EST UNE DECISION (2026-09-01) ──────────────
|
|
#
|
|
# Il portait DIX-SEPT roles : exactement ceux du socle et du durcissement, que le
|
|
# deploiement rejoue ensuite a l'identique. Le gabarit etait donc un CACHE du socle —
|
|
# et comme tout cache, il perimait sans le dire.
|
|
#
|
|
# Mesure du 2026-09-01 : derniere recapture le 2026-08-09, et SIX de ses roles avaient
|
|
# change depuis (common_packages, cloud_init, ssh_baseline, ssh_hardening, auditd,
|
|
# nftables_baseline). Rien ne le signalait — le deploiement masquait la derive en
|
|
# reappliquant tout, donc personne ne pouvait la voir.
|
|
#
|
|
# CE QUI RESTE ICI N'EST PAS UN CHOIX D'EFFICACITE, C'EST UNE CONDITION D'EXISTENCE :
|
|
# chacun doit etre en place AVANT qu'Ansible puisse agir. Tout le reste appartient au
|
|
# socle, qui l'applique de toute facon — et P56 refuse qu'un role retire ne soit repris
|
|
# par personne.
|
|
#
|
|
# `qemu_guest_agent` l'agent invite repond AVANT SSH. C'est par lui que `creer-vm`
|
|
# confirme la materialisation sans entrer chez le tenant (P52).
|
|
# `cloud_init` le seul chemin vers la premiere seconde — adresse, nom d'hote,
|
|
# cles de naissance. Sans lui, personne ne peut joindre la VM.
|
|
# `sudo_ansible` le compte technique et son sudo : la porte par ou tout entre.
|
|
# `ssh_baseline` le serveur SSH. Meme raison, un cran plus bas.
|
|
#
|
|
# CE QUE LA REDUCTION COUTE, ET QUI EST COUVERT : une VM neuve n'est plus durcie a la
|
|
# naissance. Elle nait cependant DERRIERE LE PARE-FEU DE L'HYPERVISEUR,
|
|
# `policy_in=REJECT` arme au clonage (verifie le 2026-09-01 sur `obs-01`) : seuls les
|
|
# flux declares l'atteignent, avant meme son premier paquet. La fenetre d'exposition est
|
|
# fermee par la fabric, pas par le gabarit.
|
|
#
|
|
# CE QU'ELLE RAPPORTE : un gabarit qui ne contient presque rien ne peut presque pas
|
|
# perimer.
|
|
roles:
|
|
- qemu_guest_agent
|
|
- cloud_init
|
|
- sudo_ansible
|
|
- ssh_baseline
|