Set-OPS-Public/playbooks/modeles_vm/debian13_proxmox_preparer.yml

60 lines
3 KiB
YAML
Raw Normal View History

---
- 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"
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
# ─── 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