37 lines
1.7 KiB
YAML
37 lines
1.7 KiB
YAML
- name: Set full image path on Proxmox
|
|
ansible.builtin.set_fact:
|
|
remote_image_path: "{{ dest_image_path }}{{ image_filename }}"
|
|
delegate_to: localhost
|
|
|
|
- name: Check if 'backup' template VM exists
|
|
ansible.builtin.command: "qm status {{ vmid_backup_template }}"
|
|
register: backup_vm_status
|
|
failed_when: false
|
|
changed_when: false
|
|
|
|
- name: Check if 'latest' template VM exists
|
|
ansible.builtin.command: "qm status {{ vmid_latest_template }}"
|
|
register: latest_vm_status
|
|
failed_when: false
|
|
changed_when: false
|
|
|
|
- name: Destroy existing 'backup' template VM (to ensure a clean slate for rotation)
|
|
ansible.builtin.command: "qm destroy {{ vmid_backup_template }} --purge"
|
|
when: backup_vm_status.rc == 0 # Only destroy if it actually exists
|
|
register: destroy_backup_result
|
|
|
|
- name: Clone 'latest' template to 'backup' template VMID (if 'latest' exists)
|
|
ansible.builtin.shell: |
|
|
qm clone {{ vmid_latest_template }} {{ vmid_backup_template }} --name {{ vmname_backup_template }} --full --storage {{ storage_name }}
|
|
qm template {{ vmid_backup_template }}
|
|
qm destroy {{ vmid_latest_template }} --purge
|
|
when: latest_vm_status.rc == 0 # Only clone if 'latest' VM exists
|
|
register: clone_to_backup_result
|
|
|
|
- name: Restore VM from image to 'latest' template VMID
|
|
ansible.builtin.shell: |
|
|
qmrestore {{ remote_image_path }} {{ vmid_latest_template }} --unique true --storage {{ storage_name }}
|
|
qm set {{ vmid_latest_template }} --cores {{ cpu_cores }} --memory {{ memory_mb }} --name {{ vmname_latest_template }} --tag {{ template_version }}
|
|
qm template {{ vmid_latest_template }}
|
|
register: restore_new_latest_result
|
|
changed_when: restore_new_latest_result.rc == 0
|