You've already forked deploy-vm
49 lines
1.8 KiB
YAML
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
|
|
}}
|