This commit is contained in:
plasmagoat 2025-06-09 00:55:51 +02:00
parent a8aa633c49
commit de99267348
11 changed files with 55 additions and 252 deletions

View file

@ -1,37 +1,37 @@
- name: Set full image path on Proxmox
ansible.builtin.set_fact:
remote_image_path: "{{ dest_image_path }}{{ image_filename }}"
delegate_to: localhost # Run this locally to set a fact accessible globally
delegate_to: localhost
- name: Destroy existing backup template VM (if it exists)
ansible.builtin.shell: "qm destroy {{ vmid_backup_template }} --purge || true"
# args:
# warn: no
# changed_when: false # Assume idempotency; if it didn't exist, no change
failed_when: false # Don't fail if VM isn't found
- 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: Clone 'lastest' template to 'backup' template VMID
ansible.builtin.command: >
qm clone {{ vmid_latest_template }} {{ vmid_backup_template }} --name {{ vmname_backup_template }} --full
# args:
# creates: "/etc/pve/qemu-server/{{ vmid_backup_template }}.conf" # Idempotency check: only run if config file doesn't exist
# failed_when: false # Don't fail if VM isn't found
- 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: Convert 'backup' template VM to a template
ansible.builtin.command: "qm template {{ vmid_backup_template }}"
- 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: Destroy existing backup template VM (if it exists)
ansible.builtin.shell: "qm destroy {{ vmid_backup_template }} --purge || true"
- 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.command: >
qmrestore {{ remote_image_path }} {{ vmid_latest_template }} --unique true
# args:
# creates: "/etc/pve/qemu-server/{{ vmid_latest_template }}.conf" # Idempotency check: only run if config file doesn't exist
- name: Set CPU and memory for the base template VM
ansible.builtin.command: >
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 }}
- name: Convert 'backup' template VM to a template
ansible.builtin.command: "qm template {{ vmid_latest_template }}"
qm template {{ vmid_latest_template }}
register: restore_new_latest_result
changed_when: restore_new_latest_result.rc == 0