ff
All checks were successful
ci/woodpecker/push/gitleaks Pipeline was successful
ci/woodpecker/push/ansible-lint Pipeline was successful

This commit is contained in:
Michael Grote 2024-06-17 22:26:24 +02:00
parent 0bb0169b66
commit 03c6d4fa16
3 changed files with 26 additions and 11 deletions

View file

@ -38,6 +38,17 @@
when: when:
- sanoid_syncoid_destination_host - 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 - name: template syncoid_mail.service
become: true become: true
ansible.builtin.template: ansible.builtin.template:

View file

@ -6,14 +6,5 @@ OnFailure=syncoid_mail.service
OnSuccess=syncoid_mail.service OnSuccess=syncoid_mail.service
[Service] [Service]
Type=oneshot Type=simple
# check if dest-dataset is mounted (sed: entferne 1. Zeile; awk: zeige nur yes/no; grep: RC1 when != yes) ExecStart=/usr/bin/syncoid.sh
{% 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 %}

View file

@ -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 %}