--- - name: Check if template already exists command: "qm status {{ vmid }}" register: vm_status failed_when: false changed_when: false - name: Fail if template ID exists fail: msg: "VM ID {{ vmid }} already exists. Please choose a different ID or delete the existing VM." when: vm_status.rc == 0 - name: Download Cloud Image get_url: url: "{{ image_url }}" dest: "/tmp/{{ image_name }}" mode: '0644' - name: Install libguestfs-tools apt: name: libguestfs-tools state: present ignore_errors: yes - name: Create VM with hardware config command: > qm create {{ vmid }} --name "{{ template_name }}" --memory {{ memory }} --core {{ cores }} --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci --ostype l26 --serial0 socket --vga serial0 - name: Import Disk command: "qm importdisk {{ vmid }} /tmp/{{ image_name }} {{ storage_pool }}" - name: Attach Disk to SCSI command: "qm set {{ vmid }} --scsi0 {{ storage_pool }}:vm-{{ vmid }}-disk-0" - name: Add Cloud-Init Drive command: "qm set {{ vmid }} --ide2 {{ storage_pool }}:cloudinit" - name: Set Boot Order command: "qm set {{ vmid }} --boot c --bootdisk scsi0" - name: Resize Disk (Default 10G) command: "qm resize {{ vmid }} scsi0 10G" ignore_errors: yes - name: Convert to Template command: "qm template {{ vmid }}" - name: Remove Downloaded Image file: path: "/tmp/{{ image_name }}" state: absent