aboutsummaryrefslogtreecommitdiffstats
path: root/roles/zfs/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/zfs/tasks/main.yml')
-rw-r--r--roles/zfs/tasks/main.yml70
1 files changed, 70 insertions, 0 deletions
diff --git a/roles/zfs/tasks/main.yml b/roles/zfs/tasks/main.yml
new file mode 100644
index 0000000..639b6c6
--- /dev/null
+++ b/roles/zfs/tasks/main.yml
@@ -0,0 +1,70 @@
+- name: install packages
+ dnf:
+ name: '{{ zfs_packages }}'
+ state: present
+
+- name: modprobe zfs
+ modprobe:
+ name: zfs
+ state: present
+
+- name: create systemd units
+ template:
+ src: etc/systemd/system/zfs-{{ item[0] }}@.{{ item[1] }}.j2
+ dest: /etc/systemd/system/zfs-{{ item[0] }}@.{{ item[1] }}
+ loop: "{{ ['scrub', 'trim'] | product(['service', 'timer']) }}"
+ register: zfs_units
+
+- name: reload systemd units
+ systemd:
+ daemon-reload: yes
+ when: zfs_units.changed
+
+- name: create zpools
+ include_tasks: create_zpool.yml
+ loop: '{{ zfs_pools }}'
+ loop_control:
+ loop_var: zpool
+ label: '{{ zpool.name }}'
+
+- name: create datasets
+ zfs:
+ name: '{{ item if item is string else item.name }}'
+ state: present
+ extra_zfs_properties: '{{ omit if item is string else (item.properties | default({})) }}'
+ loop: '{{ zfs_datasets }}'
+
+- name: enable periodic trim and scrub
+ systemd:
+ name: zfs-{{ item[1] }}@{{ item[0].name }}.timer
+ state: started
+ enabled: yes
+ loop: "{{ zfs_pools | product(['trim', 'scrub']) }}"
+ loop_control:
+ label: zfs-{{ item[1] }}@{{ item[0].name }}.timer
+
+- name: generate zed config file
+ template:
+ src: etc/zfs/zed.d/zed.rc.j2
+ dest: /etc/zfs/zed.d/zed.rc
+ notify: restart zfs-zed
+
+- name: enable zfs event daemon
+ systemd:
+ name: zfs-zed
+ enabled: yes
+ state: started
+
+- name: clone zfs-auto-snapshot
+ git:
+ repo: '{{ zfs_auto_snapshot_repo }}'
+ update: yes
+ version: '{{ zfs_auto_snapshot_version }}'
+ dest: '{{ zfs_auto_snapshot_dir }}'
+ register: zfs_auto_snapshot_git
+
+- name: install zfs-auto-snapshot
+ command:
+ cmd: make install PREFIX=/usr
+ chdir: '{{ zfs_auto_snapshot_dir }}'
+ when: zfs_auto_snapshot_git.changed