045c0b9bec
Drop separate dataset-ownership.yml task file. Use extra_zfs_properties.mountpoint directly instead of zfs get. Add rmdir cleanup for absent dataset mountpoints.
36 lines
1.3 KiB
YAML
36 lines
1.3 KiB
YAML
---
|
|
# see: https://docs.ansible.com/ansible/latest/collections/community/general/zfs_module.html
|
|
- name: Managing filesystems, volumes, snapshots
|
|
community.general.zfs:
|
|
name: "{{ item.name }}"
|
|
state: "{{ item.state }}"
|
|
extra_zfs_properties: "{{ item.extra_zfs_properties | default(omit) }}"
|
|
origin: "{{ item.origin | default(omit) }}"
|
|
with_items: "{{ zfs_datasets }}"
|
|
|
|
- name: Set dataset mountpoint ownership
|
|
ansible.builtin.file:
|
|
path: "{{ item.extra_zfs_properties.mountpoint }}"
|
|
owner: "{{ item.user | default(ansible_user) }}"
|
|
group: "{{ item.group | default(ansible_user) }}"
|
|
state: directory
|
|
recurse: false
|
|
loop: "{{ zfs_datasets }}"
|
|
when:
|
|
- item.state | default('present') == 'present'
|
|
- item.extra_zfs_properties.mountpoint is defined
|
|
- item.extra_zfs_properties.mountpoint not in ['none', 'legacy']
|
|
|
|
- name: Remove leftover empty mountpoint for absent datasets
|
|
ansible.builtin.command: "rmdir {{ item.extra_zfs_properties.mountpoint }}"
|
|
register: rmdir_result
|
|
failed_when:
|
|
- rmdir_result.rc != 0
|
|
- "'No such file or directory' not in rmdir_result.stderr"
|
|
- "'Directory not empty' not in rmdir_result.stderr"
|
|
changed_when: rmdir_result.rc == 0
|
|
loop: "{{ zfs_datasets }}"
|
|
when:
|
|
- item.state | default('present') == 'absent'
|
|
- item.extra_zfs_properties.mountpoint is defined
|