summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dan/sk-2019vm.yml1
-rw-r--r--dan/sk-testvm.yml7
-rw-r--r--inventory/host_vars/ch-gw-lan.yml1
-rw-r--r--inventory/host_vars/ch-jump.yml1
-rw-r--r--inventory/host_vars/ch-keyserver.yml1
-rw-r--r--inventory/host_vars/ch-testvm.yml1
-rw-r--r--inventory/host_vars/emc-master.yml1
-rw-r--r--inventory/host_vars/emc-stats.yml2
-rw-r--r--inventory/host_vars/r3-cccamp19-av.yml1
-rw-r--r--inventory/host_vars/r3-cccamp19-feedcode.yml1
-rw-r--r--inventory/host_vars/r3-cccamp19-flora.yml1
-rw-r--r--inventory/host_vars/r3-cccamp19-verr.yml1
-rw-r--r--inventory/host_vars/r3-vex2.yml1
-rw-r--r--inventory/host_vars/sk-testvm.yml18
-rw-r--r--inventory/hosts.ini8
-rw-r--r--roles/vm/define/templates/libvirt-domain.xml.j216
-rw-r--r--roles/vm/install/tasks/main.yml17
17 files changed, 71 insertions, 8 deletions
diff --git a/dan/sk-2019vm.yml b/dan/sk-2019vm.yml
index 6c2b1448..9824c5d5 100644
--- a/dan/sk-2019vm.yml
+++ b/dan/sk-2019vm.yml
@@ -6,3 +6,4 @@
- role: sshd
- role: zsh
- role: zfs
+ - role: vm/host
diff --git a/dan/sk-testvm.yml b/dan/sk-testvm.yml
new file mode 100644
index 00000000..39c775aa
--- /dev/null
+++ b/dan/sk-testvm.yml
@@ -0,0 +1,7 @@
+---
+- name: Basic Setup
+ hosts: sk-testvm
+ roles:
+ - role: base
+ - role: sshd
+ - role: zsh
diff --git a/inventory/host_vars/ch-gw-lan.yml b/inventory/host_vars/ch-gw-lan.yml
index 4fc9eef1..8e157d5f 100644
--- a/inventory/host_vars/ch-gw-lan.yml
+++ b/inventory/host_vars/ch-gw-lan.yml
@@ -9,6 +9,7 @@ install:
primary: /dev/sda
scsi:
sda:
+ type: lvm
vg: "{{ hostvars[vm_host].host_name }}"
lv: "{{ inventory_hostname }}"
size: 10g
diff --git a/inventory/host_vars/ch-jump.yml b/inventory/host_vars/ch-jump.yml
index 94b55319..c926fd6d 100644
--- a/inventory/host_vars/ch-jump.yml
+++ b/inventory/host_vars/ch-jump.yml
@@ -9,6 +9,7 @@ install:
primary: /dev/sda
scsi:
sda:
+ type: lvm
vg: "{{ hostvars[vm_host].host_name }}"
lv: "{{ inventory_hostname }}"
size: 10g
diff --git a/inventory/host_vars/ch-keyserver.yml b/inventory/host_vars/ch-keyserver.yml
index b99ea06e..cc714392 100644
--- a/inventory/host_vars/ch-keyserver.yml
+++ b/inventory/host_vars/ch-keyserver.yml
@@ -11,6 +11,7 @@ install:
primary: /dev/sda
scsi:
sda:
+ type: lvm
vg: "{{ hostvars[vm_host].host_name }}"
lv: "{{ inventory_hostname }}"
size: 10g
diff --git a/inventory/host_vars/ch-testvm.yml b/inventory/host_vars/ch-testvm.yml
index 5c307ab0..93032981 100644
--- a/inventory/host_vars/ch-testvm.yml
+++ b/inventory/host_vars/ch-testvm.yml
@@ -11,6 +11,7 @@ install:
primary: /dev/sda
scsi:
sda:
+ type: lvm
vg: "{{ hostvars[vm_host].host_name }}"
lv: "{{ inventory_hostname }}"
size: 5g
diff --git a/inventory/host_vars/emc-master.yml b/inventory/host_vars/emc-master.yml
index 04ba1d84..fd5bffce 100644
--- a/inventory/host_vars/emc-master.yml
+++ b/inventory/host_vars/emc-master.yml
@@ -9,6 +9,7 @@ install:
primary: /dev/vda
virtio:
vda:
+ type: lvm
vg: storage
lv: "{{ inventory_hostname }}"
size: 42g
diff --git a/inventory/host_vars/emc-stats.yml b/inventory/host_vars/emc-stats.yml
index 59351996..d8d340b6 100644
--- a/inventory/host_vars/emc-stats.yml
+++ b/inventory/host_vars/emc-stats.yml
@@ -9,10 +9,12 @@ install:
primary: /dev/vda
virtio:
vda:
+ type: lvm
vg: storage
lv: "{{ inventory_hostname }}"
size: 42g
vdb:
+ type: lvm
vg: storage
lv: "{{ inventory_hostname }}-data"
size: 100g
diff --git a/inventory/host_vars/r3-cccamp19-av.yml b/inventory/host_vars/r3-cccamp19-av.yml
index 00302f8c..b751485a 100644
--- a/inventory/host_vars/r3-cccamp19-av.yml
+++ b/inventory/host_vars/r3-cccamp19-av.yml
@@ -9,6 +9,7 @@ install:
primary: /dev/sda
scsi:
sda:
+ type: lvm
vg: "{{ hostvars[vm_host].host_name }}"
lv: "{{ inventory_hostname }}"
size: 10g
diff --git a/inventory/host_vars/r3-cccamp19-feedcode.yml b/inventory/host_vars/r3-cccamp19-feedcode.yml
index cbe63876..24aefcbe 100644
--- a/inventory/host_vars/r3-cccamp19-feedcode.yml
+++ b/inventory/host_vars/r3-cccamp19-feedcode.yml
@@ -9,6 +9,7 @@ install:
primary: /dev/sda
scsi:
sda:
+ type: lvm
vg: "{{ hostvars[vm_host].host_name }}"
lv: "{{ inventory_hostname }}"
size: 42g
diff --git a/inventory/host_vars/r3-cccamp19-flora.yml b/inventory/host_vars/r3-cccamp19-flora.yml
index 00302f8c..b751485a 100644
--- a/inventory/host_vars/r3-cccamp19-flora.yml
+++ b/inventory/host_vars/r3-cccamp19-flora.yml
@@ -9,6 +9,7 @@ install:
primary: /dev/sda
scsi:
sda:
+ type: lvm
vg: "{{ hostvars[vm_host].host_name }}"
lv: "{{ inventory_hostname }}"
size: 10g
diff --git a/inventory/host_vars/r3-cccamp19-verr.yml b/inventory/host_vars/r3-cccamp19-verr.yml
index 511585c0..decedd6e 100644
--- a/inventory/host_vars/r3-cccamp19-verr.yml
+++ b/inventory/host_vars/r3-cccamp19-verr.yml
@@ -9,6 +9,7 @@ install:
primary: /dev/sda
scsi:
sda:
+ type: lvm
vg: "{{ hostvars[vm_host].host_name }}"
lv: "{{ inventory_hostname }}"
size: 20g
diff --git a/inventory/host_vars/r3-vex2.yml b/inventory/host_vars/r3-vex2.yml
index 74f9cacc..ce2c1453 100644
--- a/inventory/host_vars/r3-vex2.yml
+++ b/inventory/host_vars/r3-vex2.yml
@@ -11,6 +11,7 @@ install:
primary: /dev/sda
scsi:
sda:
+ type: lvm
vg: "{{ hostvars[vm_host].host_name }}"
lv: "{{ inventory_hostname }}"
size: 15g
diff --git a/inventory/host_vars/sk-testvm.yml b/inventory/host_vars/sk-testvm.yml
new file mode 100644
index 00000000..656bef32
--- /dev/null
+++ b/inventory/host_vars/sk-testvm.yml
@@ -0,0 +1,18 @@
+---
+vm_host: sk-2019vm
+
+install:
+ host: "{{ vm_host }}"
+ mem: 1024
+ numcpu: 1
+ disks:
+ primary: /dev/sda
+ scsi:
+ sda:
+ type: zfs
+ pool: storage
+ name: "{{ inventory_hostname }}"
+ size: 5g
+ autostart: False
+
+network: {}
diff --git a/inventory/hosts.ini b/inventory/hosts.ini
index d5286e03..1ffcae37 100644
--- a/inventory/hosts.ini
+++ b/inventory/hosts.ini
@@ -125,6 +125,7 @@ sk2013 host_name=2013 ansible_port=22000
sk2016 host_name=2016 ansible_port=22000
sk-cloudia host_name=cloudia
sk-2019vm host_name=2019vm
+sk-testvm host_name=testvm
[ele-ap]
@@ -178,12 +179,13 @@ chaos-at-home-switches
[kvmhosts]
-sk2013
-sk2016
ch-atlas
ch-gnocchi
r3-cccamp19-dione
r3-cccamp19-helene
+sk2013
+sk2016
+sk-2019vm
[kvmguests]
emc-stats
@@ -197,6 +199,7 @@ r3-cccamp19-flora
r3-cccamp19-verr
r3-cccamp19-feedcode
r3-cccamp19-av
+sk-testvm
[hroot]
@@ -213,6 +216,7 @@ ele-lt
[hetzner]
emc-stats
emc-master
+sk-testvm
[hetzner:children]
emc-xx
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: