diff --git a/nas.yml b/nas.yml index 1136381..8fbc90a 100644 --- a/nas.yml +++ b/nas.yml @@ -7,13 +7,6 @@ - common tags: base -- hosts: nas - become: yes - roles: - - ntfy - - ntfy-server - tags: ntfy - - name: Configure BTRFS RAID hosts: nas become: yes @@ -21,6 +14,13 @@ - raid tags: raid +- hosts: nas + become: yes + roles: + - ntfy + - ntfy-server + tags: ntfy + - name: Set up Samba hosts: nas become: yes diff --git a/roles/restic/templates/backup-all.sh.j2 b/roles/restic/templates/backup-all.sh.j2 index e5de777..6e78783 100644 --- a/roles/restic/templates/backup-all.sh.j2 +++ b/roles/restic/templates/backup-all.sh.j2 @@ -8,10 +8,36 @@ export RESTIC_REPOSITORY='rest:http://{{ groups['nas'][0] }}:8000/backups' export RESTIC_PASSWORD_FILE='/etc/backups/restic_backups_passwd' +log_file='/tmp/backup-all.sh.log' + +rm -f "$log_file" + for script in $(find /etc/backups -name '*.backup.sh'); do + T="$(date +%s)" + /usr/bin/bash "$script" + + res="$?" + T="$(($(date +%s)-T))" + + if [[ $res == 0 ]]; then + header='OK' + else + header="FAIL ($res)" + fi + + printf \ + "%s: %s in %02dh%02dm%02ds\n" \ + "$(basename "$script")" "$header" \ + "$((T/3600%24))" "$((T/60%60))" "$((T%60))" \ + >> "$log_file" done # Prune older backups /usr/local/bin/restic forget --keep-last 7 && \ /usr/local/bin/restic prune + +# Send status notification +ntfy publish \ + --title "Backups ($(hostname))" \ + homelab "$(cat "$log_file")"