2022-06-16 20:43:06 +02:00
|
|
|
---
|
2022-06-29 14:15:52 +02:00
|
|
|
- include_vars: vault
|
|
|
|
|
2022-06-16 20:43:06 +02:00
|
|
|
- name: check if vm name exists in hostvars
|
|
|
|
local_action: stat path="host_vars/{{ vmname }}"
|
|
|
|
register: register_name
|
|
|
|
|
|
|
|
- name: Stop if host_vars exist
|
|
|
|
debug:
|
|
|
|
msg: "The file or directory exists"
|
|
|
|
failed_when: register_name.stat.exists
|
|
|
|
|
|
|
|
- name: add new vm to hostvars
|
|
|
|
include_tasks: create_hostvars.yml
|
|
|
|
|
|
|
|
- name: install libvirt and co
|
|
|
|
package:
|
|
|
|
name:
|
|
|
|
- libvirt-daemon-system
|
|
|
|
- qemu-system
|
|
|
|
- virtinst
|
|
|
|
- qemu-utils
|
|
|
|
- libvirt-clients
|
|
|
|
- genisoimage
|
|
|
|
state: latest
|
|
|
|
become: true
|
|
|
|
|
|
|
|
- name: Create images directory
|
|
|
|
file:
|
|
|
|
path: '{{ images_dir }}'
|
|
|
|
state: directory
|
|
|
|
owner: libvirt-qemu
|
|
|
|
group: libvirt-qemu
|
|
|
|
become: true
|
|
|
|
|
|
|
|
- name: check for cloudimage
|
|
|
|
find:
|
|
|
|
age: -26w
|
|
|
|
path: '{{ images_dir }}'
|
|
|
|
pattern: '{{ base_image }}'
|
|
|
|
register: recent_cloudimage
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: "{{ recent_cloudimage.matched }}"
|
|
|
|
|
|
|
|
- name: download cloud image template, if none found or to old
|
|
|
|
get_url:
|
|
|
|
url: '{{ image_url }}'
|
|
|
|
dest: '{{ images_dir }}'
|
|
|
|
checksum: 'sha512:{{ image_checksum }}'
|
2022-06-29 14:15:52 +02:00
|
|
|
owner: libvirt-qemu
|
|
|
|
group: libvirt-qemu
|
2022-06-16 20:43:06 +02:00
|
|
|
when: not recent_cloudimage.matched
|
|
|
|
|
|
|
|
- name: Create VM image from base image
|
2022-06-29 14:15:52 +02:00
|
|
|
command: qemu-img create -b {{ base_image }} -f qcow2 -F qcow2 {{ images_dir }}{{ vmname }}.img {{ hdd }}
|
2022-06-16 20:43:06 +02:00
|
|
|
|
|
|
|
- name: Create user-data
|
|
|
|
template:
|
|
|
|
src: user-data.j2
|
|
|
|
dest: '{{ images_dir }}/user-data'
|
|
|
|
|
|
|
|
- name: Create meta-data
|
|
|
|
template:
|
|
|
|
src: meta-data.j2
|
|
|
|
dest: '{{ images_dir }}/meta-data'
|
|
|
|
|
2022-06-20 17:09:12 +02:00
|
|
|
- name: make sure setuid for qemu-bridge-helper is set
|
|
|
|
file:
|
|
|
|
path: /usr/lib/qemu/qemu-bridge-helper
|
|
|
|
mode: 04755
|
|
|
|
become: true
|
|
|
|
|
2022-06-16 20:43:06 +02:00
|
|
|
- name: Create the VM
|
2022-06-29 14:28:17 +02:00
|
|
|
command: virt-install --name={{ vmname }} --ram={{ ram }} --vcpus={{ vcpus }} --import --disk path={{ images_dir }}{{ vmname }}.img,format=qcow2 --cloud-init meta-data={{ images_dir }}meta-data,user-data={{ images_dir }}user-data --os-variant {{ os }} --network bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole --autostart
|