diff options
Diffstat (limited to 'roles')
-rw-r--r-- | roles/vm/define/templates/libvirt-domain.xml.j2 | 16 | ||||
-rw-r--r-- | roles/vm/install/tasks/main.yml | 17 |
2 files changed, 27 insertions, 6 deletions
diff --git a/roles/vm/define/templates/libvirt-domain.xml.j2 b/roles/vm/define/templates/libvirt-domain.xml.j2 index 60027205..59037fd9 100644 --- a/roles/vm/define/templates/libvirt-domain.xml.j2 +++ b/roles/vm/define/templates/libvirt-domain.xml.j2 @@ -36,10 +36,14 @@ </rng> {% if 'virtio' in hostvars[hostname].install_cooked.disks %} -{% for device, lv in hostvars[hostname].install_cooked.disks.virtio.items() %} +{% for device, src in hostvars[hostname].install_cooked.disks.virtio.items() %} <disk type='block' device='disk'> <driver name='qemu' type='raw' cache='none' discard='unmap'/> - <source dev='/dev/mapper/{{ lv.vg | replace('-', '--') }}-{{ lv.lv | replace('-', '--') }}'/> +{% if src.type == 'lvm' %} + <source dev='/dev/mapper/{{ src.vg | replace('-', '--') }}-{{ src.lv | replace('-', '--') }}'/> +{% elif src.type == 'zfs' %} + <source dev='/dev/zvol/{{ srv.pool }}/{{ srv.name }}'/> +{% endif %} <target dev='{{ device }}' bus='virtio'/> </disk> {% endfor %} @@ -47,10 +51,14 @@ {% if 'scsi' in hostvars[hostname].install_cooked.disks %} <controller type='scsi' index='0' model='virtio-scsi'/> -{% for device, lv in hostvars[hostname].install_cooked.disks.scsi.items() %} +{% for device, src in hostvars[hostname].install_cooked.disks.scsi.items() %} <disk type='block' device='disk'> <driver name='qemu' type='raw' cache='none' discard='unmap'/> - <source dev='/dev/mapper/{{ lv.vg | replace('-', '--') }}-{{ lv.lv | replace('-', '--') }}'/> +{% if src.type == 'lvm' %} + <source dev='/dev/mapper/{{ src.vg | replace('-', '--') }}-{{ src.lv | replace('-', '--') }}'/> +{% elif src.type == 'zfs' %} + <source dev='/dev/zvol/{{ srv.pool }}/{{ srv.name }}'/> +{% endif %} <target dev='{{ device }}' bus='scsi'/> </disk> {% endfor %} diff --git a/roles/vm/install/tasks/main.yml b/roles/vm/install/tasks/main.yml index 9caa88c8..a79d5074 100644 --- a/roles/vm/install/tasks/main.yml +++ b/roles/vm/install/tasks/main.yml @@ -1,12 +1,25 @@ --- -- name: create disks for vm +- name: create lvm-based disks for vm loop: "{{ hostvars[hostname].install_cooked.disks.virtio | default({}) | combine(hostvars[hostname].install_cooked.disks.scsi | default({})) | dict2items }}" loop_control: - label: "{{ item.value.vg }} / {{ item.value.lv }} ({{ item.value.size }})" + label: "{% if item.value.type == 'lvm' %}{{ item.value.vg }} / {{ item.value.lv }} ({{ item.value.size }}){% else %}unused{% endif %}" + when: item.value.type == 'lvm' lvol: vg: "{{ item.value.vg }}" lv: "{{ item.value.lv }}" size: "{{ item.value.size }}" + state: present + +- name: create zfs-based disks for vm + loop: "{{ hostvars[hostname].install_cooked.disks.virtio | default({}) | combine(hostvars[hostname].install_cooked.disks.scsi | default({})) | dict2items }}" + loop_control: + label: "{% if item.value.type == 'zfs' %}{{ item.value.pool }} / {{ item.value.name }} ({{ item.value.size }}){% else %}unused{% endif %}" + when: item.value.type == 'zfs' + zfs: + name: "{{ item.value.pool }}/{{ item.value.name }}" + state: present + extra_zfs_properties: + volsize: "{{ item.value.size }}" - block: |