Set-OPS-Public/roles/template_cleanup/tasks/main.yml
Daniel Allaire 70a0698ba7 gabarit : deriver le domaine de recherche, et vider resolv.conf a la capture
Question « on peut l'optimiser ? » — mesure avant de repondre. Rien a gagner
cote performance (UEFI/q35, virtio-scsi-single + iothread, discard+ssd,
x86-64-v2-AES, agent, balloon 0) ni cote paquets : le socle est deja cuit dans
l'image.

Ce que le gabarit transporte, c'est son lieu de naissance. searchdomain
chezlepro.ca — le domaine PUBLIC — etait herite par les 14 VM, faute de
proxmox_clone_domaines_recherche defini. Desormais derive de domaine_interne
via SETOPS_DOMAINE, par le mecanisme qui existait deja pour le DNS.

Honnetement : ca ne reparait pas de panne. serveur_debian reecrit resolv.conf
au deploiement sans ligne search — verifie sur la flotte. C'etait faux et ca
ne tenait que par chance.

template_cleanup vide desormais /etc/resolv.conf a la capture : un gabarit ne
transporte aucune identite de reseau.

Notes : mtu 9000 est un reglage MORT (les clones tournent en 1500) ; et le
groupe modeles_vm est VIDE, donc preparer/verifier/nettoyer-modele n'ont
aucune cible.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 10:25:03 -04:00

85 lines
2.7 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.
- 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."