--- - 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: 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 }}" extra_zfs_properties: "{{ zfs_volume.properties | dehumanize_zfs_properties | default(omit) }}" state: present - name: compute derivated 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 }}" - name: bind mount filesystem 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 - name: set volume owner/group and mode file: state: directory path: "{{ zfs_volume.dest | default(zfs_volume_mountpoint) }}" mode: "{{ zfs_volume.mode | default(omit) }}" owner: "{{ zfs_volume.owner | default(omit) }}" group: "{{ zfs_volume.group | default(omit) }}"