diff options
-rw-r--r-- | dan/sk-2019vm.yml | 1 | ||||
-rw-r--r-- | dan/sk-testvm.yml | 7 | ||||
-rw-r--r-- | inventory/host_vars/ch-gw-lan.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/ch-jump.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/ch-keyserver.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/ch-testvm.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/emc-master.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/emc-stats.yml | 2 | ||||
-rw-r--r-- | inventory/host_vars/r3-cccamp19-av.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/r3-cccamp19-feedcode.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/r3-cccamp19-flora.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/r3-cccamp19-verr.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/r3-vex2.yml | 1 | ||||
-rw-r--r-- | inventory/host_vars/sk-testvm.yml | 18 | ||||
-rw-r--r-- | inventory/hosts.ini | 8 | ||||
-rw-r--r-- | roles/vm/define/templates/libvirt-domain.xml.j2 | 16 | ||||
-rw-r--r-- | roles/vm/install/tasks/main.yml | 17 |
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: |