--- - name: "create VM template" hosts: pve remote_user: ansuser gather_facts: no vars: vm: cloud_image_url: https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.qcow2 cloud_image_path: /tmp/debian-11-cloudinit-amd64.qcow2 template_id: 1001 template_name: debian-11-cloudinit-template template_memory: 4096 template_bridge: vmbr100 tasks: - name: destroy template command: "qm destroy {{ vm.template_id }}" become: yes ignore_errors: true - name : download cloud image get_url: url: "{{ vm.cloud_image_url }}" dest: "{{ vm.cloud_image_path }}" mode: 0700 become: yes - name: Install Cloud-init apt: name: - libguestfs-tools become: yes - name: Create Proxmox snippet file: path: /var/lib/vz/snippets state: directory mode: '0755' - name: Install cloud-init on img command: "virt-customize -a {{ vm.cloud_image_path }} --install cloud-init" become: yes - name: Install QEMU agent on img command: "virt-customize -a {{ vm.cloud_image_path }} --install qemu-guest-agent" become: yes - name: Exec local script local_action: command bash cloud-config-gen.sh - name : Copy cloud-init-config file copy: src: cloud-init-conf.yml dest: /var/lib/vz/snippets/cloud-init-conf.yml mode: '0700' become: yes - name: create a VM to use as a template command: "qm create {{ vm.template_id }} --name {{ vm.template_name }} --memory {{ vm.template_memory }} --net0 virtio,bridge={{ vm.template_bridge }}" become: yes - name: import disk image command: "qm importdisk {{ vm.template_id }} {{ vm.cloud_image_path }} local-lvm" become: yes - name: configure VM to use imported image command: "qm set {{ vm.template_id }} --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-{{ vm.template_id }}-disk-0" become: yes - name: add cloud-init image as CDROM command: "qm set {{ vm.template_id }} --ide2 local-lvm:cloudinit" become: yes - name: configure boot from the image command: "qm set {{ vm.template_id }} --boot c --bootdisk scsi0" become: yes - name: attach serial console command: "qm set {{ vm.template_id }} --serial0 socket --vga serial0" become: yes - name: enable qemu agent command: "qm set {{ vm.template_id }} --agent 1" become: yes - name: add cloud-init-config command: 'qm set {{ vm.template_id }} --cicustom "user=local:snippets/cloud-init-conf.yml"' become: yes - name: create template command: "qm template {{ vm.template_id }}" become: yes