From 03c6d4fa16bf0c408e4ebc94c07669479eb09a96 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 17 Jun 2024 22:26:24 +0200 Subject: [PATCH 1/3] ff --- roles/mgrote_zfs_sanoid/tasks/destination.yml | 11 +++++++++++ .../mgrote_zfs_sanoid/templates/syncoid.service.j2 | 13 ++----------- roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 | 13 +++++++++++++ 3 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 diff --git a/roles/mgrote_zfs_sanoid/tasks/destination.yml b/roles/mgrote_zfs_sanoid/tasks/destination.yml index 9cb40daf..1e0fcd19 100644 --- a/roles/mgrote_zfs_sanoid/tasks/destination.yml +++ b/roles/mgrote_zfs_sanoid/tasks/destination.yml @@ -38,6 +38,17 @@ when: - sanoid_syncoid_destination_host +- name: template syncoid.sh + become: true + ansible.builtin.template: + src: "syncoid.sh.j2" + dest: /usr/bin/syncoid.sh + owner: root + group: root + mode: "0755" + when: + - sanoid_syncoid_destination_host + - name: template syncoid_mail.service become: true ansible.builtin.template: diff --git a/roles/mgrote_zfs_sanoid/templates/syncoid.service.j2 b/roles/mgrote_zfs_sanoid/templates/syncoid.service.j2 index ef25ec94..af61c7f5 100644 --- a/roles/mgrote_zfs_sanoid/templates/syncoid.service.j2 +++ b/roles/mgrote_zfs_sanoid/templates/syncoid.service.j2 @@ -6,14 +6,5 @@ OnFailure=syncoid_mail.service OnSuccess=syncoid_mail.service [Service] -Type=oneshot -# check if dest-dataset is mounted (sed: entferne 1. Zeile; awk: zeige nur yes/no; grep: RC1 when != yes) -{% for item in sanoid_syncoid_datasets_sync %} -# check if target dataset is mounted -ExecStart=/bin/sh -c '/usr/sbin/zfs get mounted -H {{ item.destination_mount_check }} | awk "{print $3}" | grep yes > /dev/null' -# check if source host is reachable -ExecStart=/bin/sh -c 'ping -c1 -W1 {{ item.source_host }} > /dev/null || {{ item.source_host }} not reachable!' -# syncoid -ExecStart=/bin/sh -c 'echo "sending {{ item.source_dataset }}..."' -ExecStart=/bin/sh -c 'export HOME=/root ; /usr/bin/syncoid --compress=zstd-fast --quiet --sshoption=StrictHostKeyChecking=no --delete-target-snapshots --use-hold --preserve-recordsize --sshkey "/etc/sanoid/.ssh/id_sanoid" --source-bwlimit {{ sanoid_syncoid_bwlimit }} {{ sanoid_user }}@{{ item.source_host }}:{{ item.source_dataset }} {{ item.destination_dataset }}' -{% endfor %} +Type=simple +ExecStart=/usr/bin/syncoid.sh diff --git a/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 b/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 new file mode 100644 index 00000000..2715e72e --- /dev/null +++ b/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 @@ -0,0 +1,13 @@ +#!/bin/bash +{{ file_header | default () }} + +# check if dest-dataset is mounted (sed: entferne 1. Zeile; awk: zeige nur yes/no; grep: RC1 when != yes) +{% for item in sanoid_syncoid_datasets_sync %} +# check if target dataset is mounted +/usr/sbin/zfs get mounted -H {{ item.destination_mount_check }} | awk "{print $3}" | grep yes > /dev/null +# check if source host is reachable +ping -c1 -W1 {{ item.source_host }} > /dev/null || {{ item.source_host }} not reachable! +# syncoid +echo "sending {{ item.source_dataset }}..." +export HOME=/root ; /usr/bin/syncoid --compress=zstd-fast --quiet --sshoption=StrictHostKeyChecking=no --delete-target-snapshots --use-hold --preserve-recordsize --sshkey "/etc/sanoid/.ssh/id_sanoid" --source-bwlimit {{ sanoid_syncoid_bwlimit }} {{ sanoid_user }}@{{ item.source_host }}:{{ item.source_dataset }} {{ item.destination_dataset }} +{% endfor %} -- 2.34.1 From fcf3ed7d153808354c09b9b57c39c1c55b9d8840 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 17 Jun 2024 22:28:24 +0200 Subject: [PATCH 2/3] q --- roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 b/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 index 2715e72e..3ba9c199 100644 --- a/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 +++ b/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 @@ -9,5 +9,5 @@ ping -c1 -W1 {{ item.source_host }} > /dev/null || {{ item.source_host }} not reachable! # syncoid echo "sending {{ item.source_dataset }}..." -export HOME=/root ; /usr/bin/syncoid --compress=zstd-fast --quiet --sshoption=StrictHostKeyChecking=no --delete-target-snapshots --use-hold --preserve-recordsize --sshkey "/etc/sanoid/.ssh/id_sanoid" --source-bwlimit {{ sanoid_syncoid_bwlimit }} {{ sanoid_user }}@{{ item.source_host }}:{{ item.source_dataset }} {{ item.destination_dataset }} +export HOME=/root ; /usr/bin/syncoid --compress=zstd-fast --sshoption=StrictHostKeyChecking=no --delete-target-snapshots --use-hold --preserve-recordsize --sshkey "/etc/sanoid/.ssh/id_sanoid" --source-bwlimit {{ sanoid_syncoid_bwlimit }} {{ sanoid_user }}@{{ item.source_host }}:{{ item.source_dataset }} {{ item.destination_dataset }} {% endfor %} -- 2.34.1 From bd3fdf28849951ed6c23fe35d34352fa1a4c24b4 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 17 Jun 2024 22:30:26 +0200 Subject: [PATCH 3/3] f --- roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 b/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 index 3ba9c199..81acfe38 100644 --- a/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 +++ b/roles/mgrote_zfs_sanoid/templates/syncoid.sh.j2 @@ -6,8 +6,7 @@ # check if target dataset is mounted /usr/sbin/zfs get mounted -H {{ item.destination_mount_check }} | awk "{print $3}" | grep yes > /dev/null # check if source host is reachable -ping -c1 -W1 {{ item.source_host }} > /dev/null || {{ item.source_host }} not reachable! +ping -c1 -W1 {{ item.source_host }} > /dev/null || {{ item.source_host }} not reachable! # syncoid -echo "sending {{ item.source_dataset }}..." export HOME=/root ; /usr/bin/syncoid --compress=zstd-fast --sshoption=StrictHostKeyChecking=no --delete-target-snapshots --use-hold --preserve-recordsize --sshkey "/etc/sanoid/.ssh/id_sanoid" --source-bwlimit {{ sanoid_syncoid_bwlimit }} {{ sanoid_user }}@{{ item.source_host }}:{{ item.source_dataset }} {{ item.destination_dataset }} {% endfor %} -- 2.34.1