From 5f3230aad459d06cfd257616564bddc4cd9ad7cc Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Tue, 11 Jan 2022 00:04:35 +0100 Subject: zfs/syncoid: add error handling to pull --- .../zfs/syncoid/templates/syncoid_finalize.j2 | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 roles/storage/zfs/syncoid/templates/syncoid_finalize.j2 (limited to 'roles/storage/zfs/syncoid/templates/syncoid_finalize.j2') diff --git a/roles/storage/zfs/syncoid/templates/syncoid_finalize.j2 b/roles/storage/zfs/syncoid/templates/syncoid_finalize.j2 new file mode 100644 index 00000000..5ddc691b --- /dev/null +++ b/roles/storage/zfs/syncoid/templates/syncoid_finalize.j2 @@ -0,0 +1,53 @@ +#!/bin/bash +{% if zfs_syncoid_autosuspend %} + +echo "running sanoid --prune to cleanup old snapshots" +sleep 5 +echo systemctl start --wait sanoid-prune.service + +echo "wait 30s (autosuspend cooldown period)" +sleep 30 +echo "done." +{% endif %} + +if [ -z "$RUNTIME_DIRECTORY" ]; then + exit 0 +fi + +ret=0 +for line in $(cat "$RUNTIME_DIRECTORY/exit_codes"); do + if [[ $line =~ [^[:digit:]] ]]; then + ret=-1 + echo "invalid exit_code from pull script: $line" + else + ret=$line + fi + if [ $ret -ne 0 ]; then + break + fi +done + +cat <> "$RUNTIME_DIRECTORY/metrics" +syncoid_pull_last_run{backup_server="{{ inventory_hostname }}"} $(date +"%s") +EOF + + +if [ -z "$1" ] || [ -z "$2" ] || [ "$1" == "--" ] || [ "$2" == "--" ]; then + echo "$0 [ -- ]" + exit -2 +fi +report_to=$1 +textfile_collector_path=$2 +shift 2 +if [ -n "$1" ]; then + if [ "$1" != "--" ]; then + echo "additional arguments must be separated using '--'" + exit -2 + fi + shift +fi + +echo "transfering prometheus metrics to: $report_to:$textfile_collector_path" +cat "$RUNTIME_DIRECTORY/metrics" | ssh -o "UserKnownHostsFile=/var/lib/syncoid/ssh.knownhosts" -o "HashKnownHosts=no" -i "/var/lib/syncoid/id_ssh_ed25519" "$@" "$report_to" "cat > '$textfile_collector_path/syncoid-pull-{{ inventory_hostname }}.prom'" + +exit $ret -- cgit v1.2.3