Set-OPS-Public/playbooks/modeles_vm/debian13_proxmox_preparer.yml
Daniel Allaire 2f2323bd3e
Some checks are pending
verifier / verifier (push) Waiting to run
gabarit : minimal — il etait un cache du socle, et il perimait sans le dire
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
2026-09-01 10:35:20 -04:00

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