lancelot : modèle 9100 avec agent QEMU, machine-id régénéré, pool et destroy par l'API
- modèle par défaut 9100 debian13-bwpoc (dérivé de 9001 + qemu-guest-agent), fabrication en SSH root seulement si pve_template_create: true - régénération du machine-id par l'agent QEMU (sinon même IP DHCP pour tous les clones) - pool bwpoc créé par l'API, 99-destroy par l'API - correctif ansible-core 2.21 (copie de hostvars), clé SSH id_ed25519 ou id_rsa Déploiement validé sur lancelot : 50-tests 26 OK, 0 KO. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
f315304849
commit
de23e19910
8 files changed
+106
-29
No files matched your search
@@ -5,7 +5,8 @@
|
||||
hosts: proxmox
|
||||
gather_facts: false
|
||||
roles:
|
||||
- proxmox_template
|
||||
- role: proxmox_template
|
||||
when: pve_template_create | bool
|
||||
|
||||
# 2) Clonage des VM par l'API, avec le compte dédié bwpoc@pve (jeton API).
|
||||
# Authentification : jeton (PVE_TOKEN_SECRET) ou mot de passe (PROXMOX_CLAUDE / PROXMOX_PASSWORD).
|
||||
|
||||
+27
-19
@@ -2,7 +2,19 @@
|
||||
# Supprime les VM du PoC (le modèle est conservé, sauf -e destroy_template=true).
|
||||
- name: Détruire les VM du PoC
|
||||
hosts: proxmox
|
||||
connection: local
|
||||
gather_facts: false
|
||||
vars:
|
||||
ansible_become: false
|
||||
ansible_python_interpreter: "{{ ansible_playbook_python }}"
|
||||
module_defaults:
|
||||
group/community.proxmox.proxmox:
|
||||
api_host: "{{ ansible_host }}"
|
||||
api_user: "{{ pve_api_user }}"
|
||||
api_token_id: "{{ pve_api_token_id if pve_api_token_secret | length > 0 else omit }}"
|
||||
api_token_secret: "{{ pve_api_token_secret if pve_api_token_secret | length > 0 else omit }}"
|
||||
api_password: "{{ pve_api_password if pve_api_token_secret | length == 0 else omit }}"
|
||||
validate_certs: "{{ pve_validate_certs }}"
|
||||
vars_prompt:
|
||||
- name: confirm
|
||||
prompt: "Taper 'detruire' pour supprimer les VM {{ groups['poc_vms'] | unique | join(', ') }}"
|
||||
@@ -12,30 +24,26 @@
|
||||
ansible.builtin.meta: end_play
|
||||
when: confirm != 'detruire'
|
||||
|
||||
- name: Arrêter et supprimer les VM
|
||||
ansible.builtin.shell: |
|
||||
if qm status {{ hostvars[item].vm_id }} >/dev/null 2>&1; then
|
||||
qm stop {{ hostvars[item].vm_id }} --skiplock 1 || true
|
||||
qm destroy {{ hostvars[item].vm_id }} --purge 1 --destroy-unreferenced-disks 1
|
||||
echo destroyed
|
||||
fi
|
||||
register: destroy
|
||||
changed_when: "'destroyed' in destroy.stdout"
|
||||
- name: Arrêter et supprimer les VM (API)
|
||||
community.proxmox.proxmox_kvm:
|
||||
node: "{{ pve_node }}"
|
||||
vmid: "{{ hostvars[item].vm_id }}"
|
||||
state: absent
|
||||
force: true
|
||||
timeout: 300
|
||||
loop: "{{ groups['poc_vms'] | unique }}"
|
||||
|
||||
- name: Supprimer le modèle
|
||||
ansible.builtin.shell: |
|
||||
if qm status {{ pve_template_vmid }} >/dev/null 2>&1; then
|
||||
qm destroy {{ pve_template_vmid }} --purge 1 && echo destroyed
|
||||
fi
|
||||
register: tpl_destroy
|
||||
changed_when: "'destroyed' in tpl_destroy.stdout"
|
||||
when: destroy_template | default(false) | bool
|
||||
- name: Supprimer le modèle (seulement s'il a été créé par le PoC)
|
||||
community.proxmox.proxmox_kvm:
|
||||
node: "{{ pve_node }}"
|
||||
vmid: "{{ pve_template_vmid }}"
|
||||
state: absent
|
||||
when:
|
||||
- destroy_template | default(false) | bool
|
||||
- pve_template_create | bool
|
||||
|
||||
- name: Oublier les IP DHCP mémorisées
|
||||
ansible.builtin.file:
|
||||
path: "{{ inventory_dir }}/host_vars/{{ item }}/dhcp.yml"
|
||||
state: absent
|
||||
loop: "{{ groups['poc_vms'] | unique }}"
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
Reference in new issue
Block a user