summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
Diffstat (limited to 'roles')
-rw-r--r--roles/vm/define/templates/libvirt-domain.xml.j216
-rw-r--r--roles/vm/install/tasks/main.yml17
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: