56 lines
1.9 KiB
YAML
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' }}"
|