summaryrefslogtreecommitdiff
path: root/roles/storage/zfs/syncoid/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/storage/zfs/syncoid/tasks/main.yml')
-rw-r--r--roles/storage/zfs/syncoid/tasks/main.yml47
1 files changed, 47 insertions, 0 deletions
diff --git a/roles/storage/zfs/syncoid/tasks/main.yml b/roles/storage/zfs/syncoid/tasks/main.yml
new file mode 100644
index 00000000..53aa434a
--- /dev/null
+++ b/roles/storage/zfs/syncoid/tasks/main.yml
@@ -0,0 +1,47 @@
+---
+- name: install sanoid package
+ apt:
+ name: sanoid
+ state: present
+
+- name: create syncoid directory
+ file:
+ path: /var/lib/syncoid
+ state: directory
+ mode: 0700
+
+- name: genarate ssh keypair for syncoid
+ openssh_keypair:
+ path: /var/lib/syncoid/id_ssh_ed25519
+ type: ed25519
+ comment: ZFS Backup syncoid@{{ host_name }}
+
+- name: generate syncoid ssh config wrapper
+ copy:
+ content: |
+ #!/bin/bash
+ exec /usr/sbin/syncoid --sshoption "UserKnownHostsFile=/var/lib/syncoid/ssh.knownhosts" --sshoption "HashKnownHosts=no" --sshkey "/var/lib/syncoid/id_ssh_ed25519" --no-sync-snap --compress zstd-fast "$@"
+ dest: /var/lib/syncoid/syncoid_wrapper
+ mode: 0755
+
+- name: configure lvm to ignore zfs volumes
+ lineinfile:
+ path: /etc/lvm/lvm.conf
+ backrefs: yes
+ regexp: '^\s*#?\s*global_filter\s*='
+ line: ' global_filter = [ "r|/dev/zd[0-9]+|" ]'
+
+- name: create target datasets
+ loop: "{{ zfs_syncoid_sources | dict2items }}"
+ loop_control:
+ loop_var: source
+ label: "{{ source.key }}"
+ include_tasks: datasets.yml
+
+- name: create systemd units
+ loop: "{{ zfs_syncoid_sources | dict2items }}"
+ loop_control:
+ label: "{{ item.key }}"
+ template:
+ src: systemd.service.j2
+ dest: "/etc/systemd/system/syncoid-{{ item.key }}.service"