install.fairie/home/dot_local/share/ansible/tasks/qubes/_packer-hvm.yml
2023-07-16 01:40:26 -04:00

56 lines
1.9 KiB
YAML

---
- name: Create LVM volume
# TODO: Convert to Ansible syntax
command: sudo lvcreate -n "{{ vm.lvm }}" -V "{{ vm.disk_size | default('100G') }}" --thinpool vm-pool qubes_dom0
- name: Format the volume to EXT4
# TODO: Convert to Ansible syntax
command: sudo mkfs.ext4 /dev/qubes_dom0/{{ vm.lvm }}
- name: Create mounting point
become: true
file:
mode: 0755
path: /srv/disks/{{ vm.lvm }}
state: directory
- name: Mount the volume
become: true
ansible.posix.mount:
path: /dev/qubes_dom0/{{ vm.lvm }}
src: /srv/disks/{{ vm.lvm }}
state: present
- name: Update the permissions of the mount
become: true
file:
path: /srv/{{ vm.lvm }}
owner: '{{ ansible_user | default(ansible_env.USERNAME) }}'
group: '{{ ansible_user | default(ansible_env.USERNAME) }}'
mode: 0755
- name: Determine if the image for {{ vm.name }} is already present
ansible.builtin.stat:
path: /srv/disks/{{ vm.lvm }}/{{ vm.slug | lower }}.img
register: vm_image_path
- name: Copy raw image to dom0
command: |
qvm-run --pass-io {{ qubes_usb_transfer_vm }} "cat /media/user/disk/img/{{ vm.slug | lower }}.img" > '/srv/disks/{{ vm.lvm }}/{{ vm.slug }}.img'
when: not vm_image_path.stat.exists
- name: Creating TemplateVM for {{ vm.name }}
# Cannot use `qubesos:` because it relies on `--root-move-from`
# TODO: Check if template exists already
command: >
qvm-create
--class TemplateVM
--label purple
--property=include_in_backups=true
--property=kernel=''
--property=maxmem=8192
--property=memory=4096
--property=vcpus=4
--property=virt_mode=hvm
--root-move-from /srv/disks/{{ vm.lvm }}/{{ vm.slug | lower }}.img
{{ (vm.slug | lower) + '-desktop-base' }}
- name: Create AppVMs based on the TemplateVM for {{ vm.name }}
# TODO: Check if template exists already
qubesos:
guest: "{{ vm.name + '-desktop-base' }}"
label: purple
state: create
template: "{{ (vm.slug | lower) + '-desktop' }}"