83 lines
2.5 KiB
YAML
83 lines
2.5 KiB
YAML
---
|
|
- 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:
|
|
- cloud-init
|
|
- libguestfs-tools
|
|
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
|