Files
ansible_proxmox_VM/tasks/create-template.yml

75 lines
2.4 KiB
YAML
Raw Normal View History

---
# create-template.yml - Convert VM to template with proper idempotency
- name: "[TEMPLATE] Check if VM is already a template"
ansible.builtin.include_tasks: helpers.yml
vars:
helper_task: check_template
target_vm_id: "{{ vm_id }}"
- name: "[TEMPLATE] Display template status"
2025-11-15 21:49:12 +01:00
ansible.builtin.debug:
msg: "Template status for VM {{ vm_id }}: {{ 'ALREADY A TEMPLATE' if is_template else 'NOT YET A TEMPLATE' }}"
- name: "[TEMPLATE] Verify VM is stopped before converting"
block:
- name: "[TEMPLATE] Check VM status"
ansible.builtin.include_tasks: helpers.yml
vars:
helper_task: check_vm_status
target_vm_id: "{{ vm_id }}"
- name: "[TEMPLATE] Stop VM if running"
2025-11-15 21:49:12 +01:00
ansible.builtin.command: "qm stop {{ vm_id }}"
register: vm_stop
when: vm_status != 'stopped'
changed_when: vm_stop.rc == 0
- name: "[TEMPLATE] Wait for VM to stop"
2025-11-15 21:49:12 +01:00
ansible.builtin.pause:
seconds: 2
when: vm_status != 'stopped'
rescue:
- name: "[TEMPLATE] Handle VM stop error"
2025-11-15 21:49:12 +01:00
ansible.builtin.debug:
msg: "WARNING: Could not verify/stop VM {{ vm_id }}. Continuing..."
- name: "[TEMPLATE] Convert VM to template (idempotent - skipped if already template)"
block:
- name: "[TEMPLATE] Convert to template"
2025-11-15 21:49:12 +01:00
ansible.builtin.command: "qm template {{ vm_id }}"
register: template_convert
when: not is_template
changed_when: template_convert.rc == 0
- name: "[TEMPLATE] Verify conversion"
ansible.builtin.include_tasks: helpers.yml
vars:
helper_task: check_template
target_vm_id: "{{ vm_id }}"
- name: "[TEMPLATE] Ensure template conversion succeeded"
ansible.builtin.assert:
that:
- is_template | bool
fail_msg: "Failed to convert VM {{ vm_id }} to template"
- name: "[TEMPLATE] Display template conversion result"
2025-11-15 21:49:12 +01:00
ansible.builtin.debug:
msg: |
✓ VM {{ vm_id }} ({{ hostname }}) successfully converted to template
Template can now be cloned
rescue:
- name: "[TEMPLATE] Handle template conversion error"
2025-11-15 21:49:12 +01:00
ansible.builtin.fail:
msg: |
Failed to convert VM {{ vm_id }} to template:
{{ ansible_failed_result | default('Unknown error') }}
- name: "[TEMPLATE] Skip template conversion (already done)"
2025-11-15 21:49:12 +01:00
ansible.builtin.debug:
msg: " VM {{ vm_id }} is already a template, skipping conversion"
when: is_template