summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inventory/host_vars/ch-oulu.yml2
-rw-r--r--inventory/host_vars/ch-prometheus.yml2
-rw-r--r--inventory/host_vars/s2-thetys.yml2
-rw-r--r--inventory/host_vars/sk-2019.yml2
-rw-r--r--inventory/host_vars/sk-2019vm.yml2
-rw-r--r--inventory/host_vars/sk-cloudia/vars.yml2
-rw-r--r--inventory/host_vars/sk-cloudio/vars.yml4
-rw-r--r--inventory/host_vars/sk-tomnext-nc.yml2
-rw-r--r--inventory/host_vars/sk-tomnext.yml2
-rw-r--r--roles/apps/etherpad-lite/tasks/main.yml2
-rw-r--r--roles/apps/nextcloud/tasks/main.yml2
-rw-r--r--roles/chaos-at-home/fileserver/tasks/main.yml4
-rw-r--r--roles/docker/tasks/zfs.yml2
-rw-r--r--roles/kubernetes/base/tasks/zfs.yml2
-rw-r--r--roles/zfs/base/defaults/main.yml8
-rw-r--r--roles/zfs/base/tasks/enable-systemd-mount-generator.yml4
-rw-r--r--roles/zfs/base/tasks/main.yml32
17 files changed, 48 insertions, 28 deletions
diff --git a/inventory/host_vars/ch-oulu.yml b/inventory/host_vars/ch-oulu.yml
index 5ce6325f..b45e3b24 100644
--- a/inventory/host_vars/ch-oulu.yml
+++ b/inventory/host_vars/ch-oulu.yml
@@ -44,7 +44,7 @@ zfs_arc_size:
min: "{{ 2 * 1024 * 1024 * 1024 }}"
max: "{{ 8 * 1024 * 1024 * 1024 }}"
-zfs_zpools:
+zfs_pools:
nvme:
mountpoint: /srv/nvme
create_vdevs: mirror /dev/disk/by-id/nvme-Samsung_SSD_970_PRO_1TB_S462NF0M800161Z-part4 /dev/disk/by-id/nvme-Samsung_SSD_970_PRO_1TB_S462NF0M800191M-part4
diff --git a/inventory/host_vars/ch-prometheus.yml b/inventory/host_vars/ch-prometheus.yml
index 18cb88e9..d55d2c87 100644
--- a/inventory/host_vars/ch-prometheus.yml
+++ b/inventory/host_vars/ch-prometheus.yml
@@ -72,7 +72,7 @@ zfs_arc_size:
min: "{{ 2 * 1024 * 1024 * 1024 }}"
max: "{{ 24 * 1024 * 1024 * 1024 }}"
-zfs_zpools:
+zfs_pools:
nvme:
mountpoint: /srv/nvme
create_vdevs: mirror /dev/mapper/crypto-nvme0 /dev/mapper/crypto-nvme1
diff --git a/inventory/host_vars/s2-thetys.yml b/inventory/host_vars/s2-thetys.yml
index b9a0fdb6..c634a7c1 100644
--- a/inventory/host_vars/s2-thetys.yml
+++ b/inventory/host_vars/s2-thetys.yml
@@ -53,7 +53,7 @@ zfs_arc_size:
min: "{{ 2 * 1024 * 1024 * 1024 }}"
max: "{{ 4 * 1024 * 1024 * 1024 }}"
-zfs_zpools:
+zfs_pools:
storage:
mountpoint: /srv/storage
create_vdevs: /dev/disk/by-id/ata-WDC_WD5000LPVX-22V0TT0_WD-WX81AB371127-part1
diff --git a/inventory/host_vars/sk-2019.yml b/inventory/host_vars/sk-2019.yml
index 6f974993..5259a390 100644
--- a/inventory/host_vars/sk-2019.yml
+++ b/inventory/host_vars/sk-2019.yml
@@ -44,7 +44,7 @@ zfs_arc_size:
min: "{{ 2 * 1024 * 1024 * 1024 }}"
max: "{{ 12 * 1024 * 1024 * 1024 }}"
-zfs_zpools:
+zfs_pools:
storage:
mountpoint: /srv/storage
create_vdevs: mirror /dev/mapper/crypto-nvme0 /dev/mapper/crypto-nvme1
diff --git a/inventory/host_vars/sk-2019vm.yml b/inventory/host_vars/sk-2019vm.yml
index a131189c..173c89e8 100644
--- a/inventory/host_vars/sk-2019vm.yml
+++ b/inventory/host_vars/sk-2019vm.yml
@@ -44,7 +44,7 @@ zfs_arc_size:
min: "{{ 2 * 1024 * 1024 * 1024 }}"
max: "{{ 8 * 1024 * 1024 * 1024 }}"
-zfs_zpools:
+zfs_pools:
storage:
mountpoint: /srv/storage
create_vdevs: mirror /dev/mapper/crypto-nvme0 /dev/mapper/crypto-nvme1
diff --git a/inventory/host_vars/sk-cloudia/vars.yml b/inventory/host_vars/sk-cloudia/vars.yml
index 38bd7cfb..fb390f3c 100644
--- a/inventory/host_vars/sk-cloudia/vars.yml
+++ b/inventory/host_vars/sk-cloudia/vars.yml
@@ -38,7 +38,7 @@ zfs_arc_size:
min: "{{ 2 * 1024 * 1024 * 1024 }}"
max: "{{ 12 * 1024 * 1024 * 1024 }}"
-zfs_zpools:
+zfs_pools:
storage:
mountpoint: /srv/storage
create_vdevs: mirror /dev/mapper/crypto-nvme0 /dev/mapper/crypto-nvme1
diff --git a/inventory/host_vars/sk-cloudio/vars.yml b/inventory/host_vars/sk-cloudio/vars.yml
index a98bbccf..4492d1c9 100644
--- a/inventory/host_vars/sk-cloudio/vars.yml
+++ b/inventory/host_vars/sk-cloudio/vars.yml
@@ -26,10 +26,10 @@ zfs_arc_size:
min: "{{ 2 * 1024 * 1024 * 1024 }}"
max: "{{ 16 * 1024 * 1024 * 1024 }}"
-zfs_zpools:
+zfs_pools:
storage:
mountpoint: /srv/storage
- create_vdevs: mirror nvme0n1p3 nvme1n1p3
+ create_vdevs: mirror /dev/nvme0n1p3 /dev/nvme1n1p3
zfs_sanoid_modules:
storage/nextcloud:
diff --git a/inventory/host_vars/sk-tomnext-nc.yml b/inventory/host_vars/sk-tomnext-nc.yml
index efa63f4b..6d46dc27 100644
--- a/inventory/host_vars/sk-tomnext-nc.yml
+++ b/inventory/host_vars/sk-tomnext-nc.yml
@@ -47,7 +47,7 @@ zfs_arc_size:
min: "{{ 2 * 1024 * 1024 * 1024 }}"
max: "{{ 8 * 1024 * 1024 * 1024 }}"
-zfs_zpools:
+zfs_pools:
storage:
mountpoint: /srv/storage
create_vdevs: /dev/sdb
diff --git a/inventory/host_vars/sk-tomnext.yml b/inventory/host_vars/sk-tomnext.yml
index 410a1d29..718a9285 100644
--- a/inventory/host_vars/sk-tomnext.yml
+++ b/inventory/host_vars/sk-tomnext.yml
@@ -44,7 +44,7 @@ zfs_arc_size:
min: "{{ 2 * 1024 * 1024 * 1024 }}"
max: "{{ 8 * 1024 * 1024 * 1024 }}"
-zfs_zpools:
+zfs_pools:
storage:
mountpoint: /srv/storage
create_vdevs: mirror /dev/mapper/crypto-nvme0 /dev/mapper/crypto-nvme1
diff --git a/roles/apps/etherpad-lite/tasks/main.yml b/roles/apps/etherpad-lite/tasks/main.yml
index 105b89d9..caf53efd 100644
--- a/roles/apps/etherpad-lite/tasks/main.yml
+++ b/roles/apps/etherpad-lite/tasks/main.yml
@@ -19,7 +19,7 @@
- name: configure etherpad_lite base bath
set_fact:
- etherpad_lite_base_path: "{{ zfs_zpools[etherpad_lite_zfs.pool].mountpoint }}/{{ etherpad_lite_zfs.name }}"
+ etherpad_lite_base_path: "{{ zfs_pools[etherpad_lite_zfs.pool].mountpoint }}/{{ etherpad_lite_zfs.name }}"
- name: create instance subdirectories
diff --git a/roles/apps/nextcloud/tasks/main.yml b/roles/apps/nextcloud/tasks/main.yml
index 325fa15d..c2dcf8d9 100644
--- a/roles/apps/nextcloud/tasks/main.yml
+++ b/roles/apps/nextcloud/tasks/main.yml
@@ -19,7 +19,7 @@
- name: configure nextcloud base bath
set_fact:
- nextcloud_base_path: "{{ zfs_zpools[nextcloud_zfs.pool].mountpoint }}/{{ nextcloud_zfs.name }}"
+ nextcloud_base_path: "{{ zfs_pools[nextcloud_zfs.pool].mountpoint }}/{{ nextcloud_zfs.name }}"
- name: create instance subdirectories
diff --git a/roles/chaos-at-home/fileserver/tasks/main.yml b/roles/chaos-at-home/fileserver/tasks/main.yml
index b80b075b..3466d390 100644
--- a/roles/chaos-at-home/fileserver/tasks/main.yml
+++ b/roles/chaos-at-home/fileserver/tasks/main.yml
@@ -42,7 +42,7 @@
label: "{{ item.export_as | default(item.name) }}"
when: (item.export is not defined) or (item.export | bool)
mount:
- src: "{{ zfs_zpools[(item.pool | default(fileserver_zfs_default_pool))].mountpoint }}/{{ item.name }}"
+ src: "{{ zfs_pools[(item.pool | default(fileserver_zfs_default_pool))].mountpoint }}/{{ item.name }}"
path: "{{ fileserver_nfs_root }}/{{ item.export_as | default(item.name) }}"
fstype: none
opts: defaults,bind,x-systemd.automount,nofail
@@ -99,7 +99,7 @@
label: "{{ item.pool | default(fileserver_zfs_default_pool) }}/{{ item.name }}"
when: item.owner is defined or item.group is defined or item.mode is defined
file:
- path: "{{ zfs_zpools[(item.pool | default(fileserver_zfs_default_pool))].mountpoint }}/{{ item.name }}"
+ path: "{{ zfs_pools[(item.pool | default(fileserver_zfs_default_pool))].mountpoint }}/{{ item.name }}"
owner: "{{ item.owner | default(omit) }}"
group: "{{ item.group | default(omit) }}"
mode: "{{ item.mode | default(omit) }}"
diff --git a/roles/docker/tasks/zfs.yml b/roles/docker/tasks/zfs.yml
index 052a811e..e8289c7d 100644
--- a/roles/docker/tasks/zfs.yml
+++ b/roles/docker/tasks/zfs.yml
@@ -7,7 +7,7 @@
- name: bind mount filesytem
mount:
- src: "{{ zfs_zpools[docker_zfs.pool].mountpoint }}/{{ docker_zfs.name }}"
+ src: "{{ zfs_pools[docker_zfs.pool].mountpoint }}/{{ docker_zfs.name }}"
path: /var/lib/docker
fstype: none
opts: bind,x-systemd.automount,nofail
diff --git a/roles/kubernetes/base/tasks/zfs.yml b/roles/kubernetes/base/tasks/zfs.yml
index 4489bf0a..b675ee6a 100644
--- a/roles/kubernetes/base/tasks/zfs.yml
+++ b/roles/kubernetes/base/tasks/zfs.yml
@@ -7,7 +7,7 @@
- name: bind mount filesytem
mount:
- src: "{{ zfs_zpools[kubelet_zfs.pool].mountpoint }}/{{ kubelet_zfs.name }}"
+ src: "{{ zfs_pools[kubelet_zfs.pool].mountpoint }}/{{ kubelet_zfs.name }}"
path: /var/lib/kubelet
fstype: none
opts: bind,x-systemd.automount,nofail
diff --git a/roles/zfs/base/defaults/main.yml b/roles/zfs/base/defaults/main.yml
index c275b981..55dabc59 100644
--- a/roles/zfs/base/defaults/main.yml
+++ b/roles/zfs/base/defaults/main.yml
@@ -4,16 +4,16 @@ zfs_use_systemd_mount_generator: yes
# min: {{ 2 * 1024 * 1024 * 1024 }}
# max: {{ 8 * 1024 * 1024 * 1024 }}
-zfs_zpool_properties:
+zfs_pool_properties:
ashift: 12
-# zfs_zpools:
+# zfs_pools:
# storage:
# mountpoint: /srv/storage
-# create_vdevs: mirror sda sdb mirror sdc sdd log mirror nvme0n1p3 nvme1n1p3 cache nvme0n1p4 nvme1n1p4
+# create_vdevs: mirror /dev/sda /dev/sdb mirror /dev/sdc /dev/sdd log mirror /dev/nvme0n1p3 /dev/nvme1n1p3 cache /dev/nvme0n1p4 /dev/nvme1n1p4
# test:
# mountpoint: /srv/storage
-# create_vdevs: raidz sda sdb sdc sdd
+# create_vdevs: raidz /dev/sda /dev/sdb /dev/sdc /dev/sdd
# properties:
# ashift: 12
# prop: value
diff --git a/roles/zfs/base/tasks/enable-systemd-mount-generator.yml b/roles/zfs/base/tasks/enable-systemd-mount-generator.yml
index 46e709da..eaa3cebe 100644
--- a/roles/zfs/base/tasks/enable-systemd-mount-generator.yml
+++ b/roles/zfs/base/tasks/enable-systemd-mount-generator.yml
@@ -10,8 +10,8 @@
path: /etc/zfs/zfs-list.cache/
state: directory
-- name: create zfs-list.cache file for zpools
- loop: "{{ zfs_zpools | dict2items }}"
+- name: create zfs-list.cache file for all pools
+ loop: "{{ zfs_pools | dict2items }}"
loop_control:
label: "{{ item.key }}"
copy:
diff --git a/roles/zfs/base/tasks/main.yml b/roles/zfs/base/tasks/main.yml
index 54e716a6..e3783ad5 100644
--- a/roles/zfs/base/tasks/main.yml
+++ b/roles/zfs/base/tasks/main.yml
@@ -29,13 +29,33 @@
- name: gather zpool facts
zpool_facts:
-- name: generate list of existing zpools
+- name: generate list of existing pools
set_fact:
- zfs_existing_zpools: "{{ ansible_zfs_pools | map(attribute='name') | list }}"
+ zfs_existing_pools: "{{ ansible_zfs_pools | map(attribute='name') | list }}"
-- name: create zpools
- loop: "{{ zfs_zpools | dict2items }}"
+- name: try to import existing pools
+ loop: "{{ zfs_pools | dict2items }}"
loop_control:
label: "{{ item.key }}"
- when: item.key not in zfs_existing_zpools
- command: "zpool create -m {{ item.value.mountpoint }} {% for prop, value in (item.value.properties | default(zfs_zpool_properties)).items() %}-o {{ prop }}={{ value }} {% endfor %}{{ item.key }} {{ item.value.create_vdevs }}"
+ when: item.key not in zfs_existing_pools
+ command: "zpool import{% for dev in (item.value.create_vdevs.split(' ') | select('match', '^/dev/') ) %} -d {{ dev }}{% endfor %} -f {{ item.key }}"
+ register: zfs_import_result
+ failed_when:
+ - zfs_import_result.rc == 0
+ - (zfs_import_result.stderr_lines | reject("regex", " no such pool available$") | list | length) > 0
+ changed_when:
+ - (zfs_import_result.stderr_lines | length) == 0
+
+- name: gather zpool facts (again)
+ zpool_facts:
+
+- name: generate list of existing pools (again)
+ set_fact:
+ zfs_existing_pools: "{{ ansible_zfs_pools | map(attribute='name') | list }}"
+
+- name: create pools
+ loop: "{{ zfs_pools | dict2items }}"
+ loop_control:
+ label: "{{ item.key }}"
+ when: item.key not in zfs_existing_pools
+ command: "zpool create -m {{ item.value.mountpoint }} {% for prop, value in (item.value.properties | default(zfs_pool_properties)).items() %}-o {{ prop }}={{ value }} {% endfor %}{{ item.key }} {{ item.value.create_vdevs }}"