Files
deploy-vm/tasks/clone.yml
T
2026-05-29 18:30:16 +02:00

49 lines
1.8 KiB
YAML

---
# Localise le template dans le cluster (sans contrainte de nœud → recherche globale)
- name: deploy-vm | find template '{{ template_name }}' in cluster
community.general.proxmox_vm_info:
api_host: "{{ proxmox_host }}"
api_user: "{{ proxmox_api_user }}"
api_password: "{{ proxmox_api_password }}"
name: "{{ template_name }}"
type: qemu
register: template_info
- name: deploy-vm | assert template '{{ template_name }}' exists
ansible.builtin.assert:
that: template_info.proxmox_vms | length > 0
fail_msg: "Template '{{ template_name }}' introuvable dans le cluster Proxmox."
# node = nœud du template (requis par l'API Proxmox pour localiser la source du clone)
- name: deploy-vm | clone template '{{ template_name }}' → '{{ vm_name }}'
community.general.proxmox_kvm:
api_host: "{{ proxmox_host }}"
api_user: "{{ proxmox_api_user }}"
api_password: "{{ proxmox_api_password }}"
node: "{{ template_info.proxmox_vms[0].node }}"
clone: "{{ template_name }}"
newid: "{{ vm_id | default(omit, true) }}"
name: "{{ vm_name }}"
full: "{{ vm_full_clone }}"
storage: "{{ proxmox_storage }}"
timeout: "{{ vm_wait_timeout }}"
state: present
register: clone_result
when: existing_vm_info.proxmox_vms | length == 0
# resolved_node = nœud réel de la VM (existante ou fraîchement clonée)
- name: deploy-vm | resolve VM ID and node
ansible.builtin.set_fact:
resolved_vm_id: >-
{{
existing_vm_info.proxmox_vms[0].vmid
if existing_vm_info.proxmox_vms | length > 0
else clone_result.vmid
}}
resolved_node: >-
{{
existing_vm_info.proxmox_vms[0].node
if existing_vm_info.proxmox_vms | length > 0
else template_info.proxmox_vms[0].node
}}