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

82 lines
3.1 KiB
YAML

---
- name: deploy-vm | check mandatory variables
ansible.builtin.assert:
that:
- proxmox_host is defined
- proxmox_host | length > 0
- proxmox_node is defined
- proxmox_node | length > 0
- proxmox_storage is defined
- proxmox_storage | length > 0
- proxmox_api_user is defined
- proxmox_api_user | length > 0
- proxmox_api_password is defined
- proxmox_api_password | length > 0
- template_name is defined
- template_name | length > 0
- vm_name is defined
- vm_name | length > 0
- vm_ip is defined
- vm_ip | length > 0
- vm_ip is match('^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/[0-9]+$')
- vm_disk_size is defined
- vm_disk_size | length >= 0
fail_msg: >-
Variables obligatoires manquantes ou invalides.
vm_name (chaîne non vide) et vm_ip (format CIDR, ex: 192.168.1.100/24) sont requis.
success_msg: "Pré-vérifications OK — VM: {{ vm_name }} | IP: {{ vm_ip }}"
- name: deploy-vm | assert vm_disk_size format is valid
ansible.builtin.assert:
that: vm_disk_size is match('^\+?[0-9]+[KMGT]$')
fail_msg: >-
vm_disk_size='{{ vm_disk_size }}' est invalide.
Format attendu : nombre suivi d'une unité (ex: "50G", "500M", "+10G").
Sans unité, Proxmox interprète la valeur en kB et refusera de "réduire" le disque.
when: vm_disk_size | length > 0
- name: deploy-vm | assert extra disks format
ansible.builtin.assert:
that:
- _disk.disk is defined
- _disk.disk | length > 0
- _disk.size is defined
- _disk.size is match('^[0-9]+[KMGT]$')
fail_msg: >-
Disque supplémentaire invalide : {{ _disk }}.
'disk' (ex: scsi1) et 'size' (ex: 100G) sont obligatoires.
La taille doit être absolue (pas de préfixe +).
loop: "{{ vm_extra_disks }}"
loop_control:
loop_var: _disk
label: "{{ _disk.disk | default('?') }}"
when: vm_extra_disks | length > 0
# Vérifie l'existence de la VM cible dans le cluster (résultat réutilisé dans clone.yml)
- name: deploy-vm | check if VM '{{ vm_name }}' already exists
community.general.proxmox_vm_info:
api_host: "{{ proxmox_host }}"
api_user: "{{ proxmox_api_user }}"
api_password: "{{ proxmox_api_password }}"
name: "{{ vm_name }}"
type: qemu
register: existing_vm_info
- name: deploy-vm | fail — VM exists, vm_force_update required to reconfigure
ansible.builtin.fail:
msg: |
La VM '{{ vm_name }}' existe déjà.
VMID : {{ existing_vm_info.proxmox_vms[0].vmid }}
Nœud : {{ existing_vm_info.proxmox_vms[0].node }}
Statut : {{ existing_vm_info.proxmox_vms[0].status }}
Modifications demandées :
Cœurs : {{ existing_vm_info.proxmox_vms[0].maxcpu | default('?') }} → {{ vm_cores }}
RAM : {{ (existing_vm_info.proxmox_vms[0].maxmem | default(0) | int // 1048576) }} Mo → {{ vm_memory }} Mo
IP : {{ vm_ip }}
Pour appliquer ces modifications, relancez avec : -e vm_force_update=true
when:
- existing_vm_info.proxmox_vms | length > 0
- not (vm_force_update | default(false) | bool)