Set-OPS-Public/playbooks/modeles_vm/debian13_proxmox_preparer.yml
Daniel Allaire 3618dfc129 gabarit recapture : copie de travail preparee, nettoyee, convertie
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>
2026-08-09 11:29:51 -04:00

61 lines
1.9 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"
roles:
- common_packages
- qemu_guest_agent
- cloud_init
- sudo_ansible
- chrony
- ssh_baseline
- systemd_ssh_auto
- motd
- hardening_packages
- sysctl_hardening
- core_dumps
- unattended_upgrades
- apparmor
- auditd
- fail2ban_ssh
- journald
- ssh_hardening
- nftables_baseline
post_tasks:
- name: Afficher le statut cloud-init
ansible.builtin.command: cloud-init status --long
register: cloud_init_status
changed_when: false
failed_when: false
- name: Résultat cloud-init
ansible.builtin.debug:
var: cloud_init_status.stdout_lines
- name: Message final
ansible.builtin.debug:
msg:
- "Préparation terminée."
- "Redémarrer si GRUB a changé."
- "Ne pas convertir avant le playbook de nettoyage final."
- "nftables est installé mais désactivé par défaut."