summaryrefslogtreecommitdiff
path: root/roles/storage/zfs/volume/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/storage/zfs/volume/tasks/main.yml')
-rw-r--r--roles/storage/zfs/volume/tasks/main.yml46
1 files changed, 27 insertions, 19 deletions
diff --git a/roles/storage/zfs/volume/tasks/main.yml b/roles/storage/zfs/volume/tasks/main.yml
index 260d706d..07a70dfc 100644
--- a/roles/storage/zfs/volume/tasks/main.yml
+++ b/roles/storage/zfs/volume/tasks/main.yml
@@ -1,37 +1,45 @@
---
-- name: check volume parent
- when: "'parent' in zfs_volume"
- assert:
- msg: "the volume parent must be of type zfs and must not have a parent"
- that:
- - zfs_volume.parent.type == 'zfs'
- - "'parent' not in zfs_volume.parent"
+- name: compute full zfs volume path
+ set_fact:
+ zfs_volume_path_full: "{{ ('parent' in zfs_volume) | ternary((zfs_volume.parent.pool | default(''))~'/'~(zfs_volume.parent.name | default('')), zfs_volume.pool) }}/{{ zfs_volume.name }}"
- name: create zfs dataset
zfs:
- name: "{{ ('parent' in zfs_volume) | ternary((zfs_volume.parent.pool | default(''))~'/'~(zfs_volume.parent.name | default('')), zfs_volume.pool) }}/{{ zfs_volume.name }}"
+ name: "{{ zfs_volume_path_full }}"
extra_zfs_properties: "{{ zfs_volume.properties | dehumanize_zfs_properties | default(omit) }}"
state: present
-- name: compute derivated mountpoint
+- name: gather volume mountpoint info
+ zfs_facts:
+ name: "{{ zfs_volume_path_full }}"
+ properties: mountpoint
+ register: zfs_volume_info
+
+- name: export volume mountpoint
set_fact:
- zfs_volume_mountpoint: "{{ (zfs_pools[zfs_volume.parent.pool | default(zfs_volume.pool)].mountpoint, ('parent' in zfs_volume) | ternary((zfs_volume.parent.name | default('')), ''), zfs_volume.name) | path_join }}"
+ storage_volume_mountpoint: "{{ zfs_volume_info.ansible_facts.ansible_zfs_datasets[0].mountpoint }}"
-- name: bind mount filesystem
+- name: bind mount volume
when:
- "'dest' in zfs_volume"
- - zfs_volume.dest != zfs_volume_mountpoint
- mount:
- src: "{{ zfs_volume_mountpoint }}"
- path: "{{ zfs_volume.dest }}"
- fstype: none
- opts: bind,x-systemd.automount,nofail
- state: mounted
+ - zfs_volume.dest != storage_volume_mountpoint
+ block:
+ - name: create bind mount
+ mount:
+ src: "{{ zfs_volume_info.ansible_facts.ansible_zfs_datasets[0].mountpoint }}"
+ path: "{{ zfs_volume.dest }}"
+ fstype: none
+ opts: bind,x-systemd.automount,nofail
+ state: mounted
+
+ - name: update volume mountpoint
+ set_fact:
+ storage_volume_mountpoint: "{{ zfs_volume.dest }}"
- name: set volume owner/group and mode
file:
state: directory
- path: "{{ zfs_volume.dest | default(zfs_volume_mountpoint) }}"
+ path: "{{ storage_volume_mountpoint }}"
mode: "{{ zfs_volume.mode | default(omit) }}"
owner: "{{ zfs_volume.owner | default(omit) }}"
group: "{{ zfs_volume.group | default(omit) }}"