modeleChezlepro (99999) clone en modeleChezlepro-travail (99998). L'original n'a pas ete touche. Deux defauts de mon propre outillage, trouves en l'utilisant : - l'inventaire d'un seul hote ne porte aucun group_vars, donc aucun utilisateur de connexion : Ansible tentait le compte local. MODELE_HOTE passe desormais ansible_user. - les playbooks ciblent hosts: modeles_vm, et un inventaire d'un seul hote place la machine dans all. La commande etait juste et la cible introuvable (« skipping: no hosts matched »). J'avais verifie l'affichage, pas l'effet. Les trois acceptent maintenant cible_modele. Le nettoyage vide /etc/resolv.conf (il portait l'identite du reseau de fabrication) et supprime les CLES D HOTE SSH — le gabarit transportait une cle privee. Sur que parce que cloud-init les recree au premier demarrage, verifie avant de l'ecrire. Reste a faire, et ce n'est pas a moi : basculer proxmox_clone_* sur le nouveau une fois qu'une VM en sera nee et aura fonctionne. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
98 lines
3.4 KiB
YAML
98 lines
3.4 KiB
YAML
---
|
|
- name: Refuser le nettoyage sans confirmation explicite
|
|
ansible.builtin.assert:
|
|
that:
|
|
- template_cleanup_confirm | bool
|
|
fail_msg: "Nettoyage refusé. Relancer avec -e template_cleanup_confirm=true"
|
|
|
|
- name: Nettoyer cloud-init
|
|
ansible.builtin.command: cloud-init clean --logs
|
|
changed_when: true
|
|
|
|
- name: Nettoyer le cache APT
|
|
ansible.builtin.apt:
|
|
clean: true
|
|
|
|
- name: Supprimer les paquets devenus inutiles
|
|
ansible.builtin.apt:
|
|
autoremove: true
|
|
|
|
- name: Rotation des journaux systemd
|
|
ansible.builtin.command: journalctl --rotate
|
|
changed_when: true
|
|
failed_when: false
|
|
|
|
- name: Vider les anciens journaux systemd
|
|
ansible.builtin.command: journalctl --vacuum-time=1s
|
|
changed_when: true
|
|
failed_when: false
|
|
|
|
- name: Vider /etc/machine-id
|
|
ansible.builtin.copy:
|
|
dest: /etc/machine-id
|
|
content: ""
|
|
owner: root
|
|
group: root
|
|
mode: "0444"
|
|
|
|
- name: Supprimer l'ancien machine-id D-Bus
|
|
ansible.builtin.file:
|
|
path: /var/lib/dbus/machine-id
|
|
state: absent
|
|
|
|
- name: Recréer le lien D-Bus vers /etc/machine-id
|
|
ansible.builtin.file:
|
|
src: /etc/machine-id
|
|
dest: /var/lib/dbus/machine-id
|
|
state: link
|
|
force: true
|
|
|
|
# Le gabarit ne doit transporter AUCUNE identite de reseau. Sans ce nettoyage, il emporte
|
|
# le `/etc/resolv.conf` du reseau ou il a ete fabrique : mesure du 2026-08-08 sur une VM
|
|
# neuve du tenant, `nameserver 192.168.12.254` — injoignable depuis son VLAN. La machine
|
|
# naissait donc sans resolution, cloud-init perdait son temps sur des `apt` qui
|
|
# echouaient, et la tache capable de reparer le fichier vit dans `serveur_debian`,
|
|
# c'est-a-dire APRES l'attente de premier demarrage.
|
|
#
|
|
# On le VIDE plutot que de le supprimer : un fichier absent se recree en silence avec
|
|
# n'importe quoi, un fichier qui s'explique dit ou regarder. Le resolveur reel est pose
|
|
# au deploiement depuis l'intrant `dns_amorcage`.
|
|
- name: Vider le resolveur herite du reseau de fabrication
|
|
ansible.builtin.copy:
|
|
dest: /etc/resolv.conf
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
content: |
|
|
# Vide a la capture du gabarit (role template_cleanup).
|
|
# Le resolveur est pose au deploiement depuis l'intrant `dns_amorcage`
|
|
# (playbooks/groupes/serveur_debian.yml, avant le premier apt).
|
|
# Un gabarit ne transporte aucune identite de reseau.
|
|
|
|
# Un gabarit ne doit transporter AUCUNE cle privee. Sans ce nettoyage, l'image porte la
|
|
# cle d'hote SSH de la machine de fabrication : quiconque detient l'image detient de quoi
|
|
# se faire passer pour n'importe quelle VM qui n'aurait pas regenere la sienne.
|
|
#
|
|
# La regeneration est faite par cloud-init au premier demarrage (module `ssh`, qui
|
|
# recree les cles absentes) — verifie le 2026-08-09 : les hotes de la flotte portent des
|
|
# empreintes toutes differentes. C'est cette regeneration qui rend la suppression sure ;
|
|
# la desactiver rendrait les VM sans cle d'hote, donc sans sshd.
|
|
- name: Supprimer les cles d hote SSH (regenerees par cloud-init au premier demarrage)
|
|
ansible.builtin.shell:
|
|
cmd: rm -f /etc/ssh/ssh_host_*
|
|
removes: /etc/ssh/ssh_host_ed25519_key
|
|
|
|
- name: Supprimer les historiques shell
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- /root/.bash_history
|
|
- "/home/{{ template_cleanup_admin_user }}/.bash_history"
|
|
failed_when: false
|
|
|
|
- name: Message final
|
|
ansible.builtin.debug:
|
|
msg:
|
|
- "Nettoyage final terminé."
|
|
- "Éteindre la VM puis convertir en template Proxmox."
|