81 lines
3.1 KiB
YAML
81 lines
3.1 KiB
YAML
|
---
|
||
|
# Gather info
|
||
|
- hosts: localhost
|
||
|
tasks:
|
||
|
# make this check for the actual drive* files probably
|
||
|
- name: Check if vm was created already
|
||
|
stat:
|
||
|
path: "{{userdata}}"
|
||
|
register: vmexists
|
||
|
ignore_errors: true
|
||
|
- name: Check for ubuntu iso
|
||
|
stat:
|
||
|
path: "{{playbook_dir}}/files/ubuntu20_04.iso"
|
||
|
register: isoexists
|
||
|
ignore_errors: true
|
||
|
- name: Check for seed iso
|
||
|
stat:
|
||
|
path: "{{userdata}}/seed.iso"
|
||
|
register: seedexists
|
||
|
ignore_errors: true
|
||
|
- name: Check for extracted linux kernel
|
||
|
stat:
|
||
|
path: "{{userdata}}/vmlinuz"
|
||
|
register: kernelexists
|
||
|
ignore_errors: true
|
||
|
- name: Check for extracted initrd
|
||
|
stat:
|
||
|
path: "{{userdata}}/initrd"
|
||
|
register: initrdexists
|
||
|
ignore_errors: true
|
||
|
|
||
|
# Setting up VM
|
||
|
- name: Create directory for VM
|
||
|
file:
|
||
|
state: directory
|
||
|
path: "{{userdata}}"
|
||
|
when: vmexists.stat.exists == false
|
||
|
|
||
|
# didn't use get_url module since it broke with symlinks
|
||
|
- name: Fetching ubuntu iso
|
||
|
command: curl -o "{{playbook_dir}}/files/ubuntu20_04.iso" https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-live-server-amd64.iso
|
||
|
when: isoexists.stat.exists == false
|
||
|
|
||
|
- name: "Create disk images"
|
||
|
shell:
|
||
|
cmd: "for i in {1..6}; do qemu-img create -f qcow2 {{userdata}}/drive${i} {{vm_disk_size}}; done"
|
||
|
when: vmexists.stat.exists == false
|
||
|
|
||
|
- name: Creating cloud-init iso
|
||
|
command: "genisoimage -output {{userdata}}/seed.iso -volid cidata -joliet -rock {{playbook_dir}}/files/user-data {{playbook_dir}}/files/meta-data"
|
||
|
when: seedexists.stat.exists == false
|
||
|
|
||
|
- name: Extracting linux kernel from iso
|
||
|
shell:
|
||
|
cmd: "isoinfo -i {{playbook_dir}}/files/ubuntu20_04.iso -R -x /casper/vmlinuz > {{userdata}}/vmlinuz"
|
||
|
when: kernelexists.stat.exists == false
|
||
|
|
||
|
- name: Extracting initrd from iso
|
||
|
shell:
|
||
|
cmd: "isoinfo -i {{playbook_dir}}/files/ubuntu20_04.iso -R -x /casper/initrd > {{userdata}}/initrd"
|
||
|
when: initrdexists.stat.exists == false
|
||
|
|
||
|
- name: Starting autoinstallation
|
||
|
shell:
|
||
|
cmd: "qemu-system-x86_64 -cdrom {{playbook_dir}}/files/ubuntu20_04.iso \
|
||
|
-enable-kvm -boot order=d \
|
||
|
-drive file={{userdata}}/drive1,if=virtio,id=a,media=disk,format=qcow2 \
|
||
|
-drive file={{userdata}}/drive2,if=virtio,id=b,media=disk,format=qcow2 \
|
||
|
-drive file={{userdata}}/drive3,if=virtio,id=c,media=disk,format=qcow2 \
|
||
|
-drive file={{userdata}}/drive4,if=virtio,id=d,media=disk,format=qcow2 \
|
||
|
-drive file={{userdata}}/drive5,if=virtio,id=e,media=disk,format=qcow2 \
|
||
|
-drive file={{userdata}}/drive6,if=virtio,id=f,media=disk,format=qcow2 \
|
||
|
-drive file={{userdata}}/seed.iso,if=virtio,format=raw \
|
||
|
-bios {{ovmf}} \
|
||
|
-m {{vm_ram}} \
|
||
|
-kernel {{userdata}}/vmlinuz \
|
||
|
-initrd {{userdata}}/initrd \
|
||
|
-append autoinstall"
|
||
|
|
||
|
# bug: autoinstall will not shutdown properly so the ansible task will never finish
|