diff options
author | Christian Pointner <equinox@spreadspace.org> | 2024-01-11 23:31:54 +0100 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2024-01-11 23:31:54 +0100 |
commit | b439a44bc80cac4e8671b776406f4259e8ce06d1 (patch) | |
tree | 4c470484091578fb01bf5836c5c8df906583f452 /roles/storage/zfs/volume/tasks/main.yml | |
parent | storage/lvm/base: allow global volumes (diff) |
make generic use of storage/zfs, storage/lvm and storage/directory possible
Diffstat (limited to 'roles/storage/zfs/volume/tasks/main.yml')
-rw-r--r-- | roles/storage/zfs/volume/tasks/main.yml | 46 |
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) }}" |