Replace custom restic logs with runitor

This commit is contained in:
Jake Howard 2024-01-03 21:09:07 +00:00
parent f5154d1683
commit 16e9952b2f
Signed by: jake
GPG key ID: 57AFB45680EDD477
5 changed files with 26 additions and 71 deletions

View file

@ -1,8 +0,0 @@
/home/restic/log/*.log {
daily
rotate 14
missingok
compress
nodateext
notifempty
}

View file

@ -8,55 +8,6 @@ export RESTIC_PASSWORD="{{ restic_key }}"
export RESTIC_REPOSITORY="b2:{{ restic_b2_bucket }}" export RESTIC_REPOSITORY="b2:{{ restic_b2_bucket }}"
export GOGC=20 # HACK: Work around for restic's high memory usage https://github.com/restic/restic/issues/1988 export GOGC=20 # HACK: Work around for restic's high memory usage https://github.com/restic/restic/issues/1988
export RESTIC_LOG_DIR="$HOME/log"
export RESTIC_LOG_FILE="$RESTIC_LOG_DIR/$1-$(date -Iseconds).log"
export FORGET_OPTIONS="--keep-daily 30 --keep-monthly 3 --group-by host"
mkdir -p "$RESTIC_LOG_DIR"
# Run backup, and capture logs to file
cron_backup() {
curl -fsS -m 10 --retry 5 -o /dev/null {{ healthchecks_host }}/{{ vault_restic_healthchecks_id }}/start
restic --verbose backup --files-from=$HOME/restic-include.txt --exclude-file=$HOME/restic-excludes.txt | tee -a $RESTIC_LOG_FILE
exit_code=${PIPESTATUS[0]}
curl -fsS -m 10 --retry 5 -o /dev/null {{ healthchecks_host }}/{{ vault_restic_healthchecks_id }}/$exit_code --data-binary "@$RESTIC_LOG_FILE"
echo "Exit code: $exit_code"
}
# Run backup, but show all the progress
backup() {
restic --verbose backup --files-from=$HOME/restic-include.txt --exclude-file=$HOME/restic-excludes.txt
}
{% if restic_forget %}
# Run forget and prune, and capture logs to file
cron_forget() {
curl -fsS -m 10 --retry 5 -o /dev/null {{ healthchecks_host }}/{{ vault_restic_forget_healthchecks_id }}/start
restic forget --prune $FORGET_OPTIONS | tee -a $RESTIC_LOG_FILE
exit_code=${PIPESTATUS[0]}
curl -fsS -m 10 --retry 5 -o /dev/null {{ healthchecks_host }}/{{ vault_restic_forget_healthchecks_id }}/$exit_code --data-binary "@$RESTIC_LOG_FILE"
echo "Exit code: $exit_code"
}
{% endif %}
# Forget legacy snapshots
forget() {
set -x set -x
restic forget $FORGET_OPTIONS $@
}
# Prune orphaned files exec restic $@
prune() {
set -x
restic --verbose prune $@
}
# Run restic, but with environment variables set
exec () {
set -x
restic $@
}
# Run the things
"$@"

View file

@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -e
exec $HOME/backrest.sh --verbose backup --files-from=$HOME/restic-include.txt --exclude-file=$HOME/restic-excludes.txt

View file

@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -e
exec $HOME/backrest.sh forget --prune --keep-daily 30 --keep-monthly 3 --group-by host

View file

@ -3,6 +3,11 @@
name: restic name: restic
become: true become: true
- name: Install runitor
kewlfft.aur.aur:
name: runitor-bin
become: true
- name: Make user - name: Make user
user: user:
name: restic name: restic
@ -10,12 +15,16 @@
system: false system: false
become: true become: true
- name: Install backrest - name: Install scripts
template: template:
src: files/backrest.sh src: files/{{ item }}
dest: /home/restic/backrest.sh dest: /home/restic/{{ item }}
mode: "0700" mode: "0700"
owner: restic owner: restic
loop:
- backrest.sh
- restic-backup.sh
- restic-forget.sh
become: true become: true
- name: Install includes files - name: Install includes files
@ -53,7 +62,7 @@
name: restic backup name: restic backup
hour: 0 hour: 0
minute: 0 minute: 0
job: /home/restic/backrest.sh cron_backup job: CHECK_UUID={{ vault_restic_healthchecks_id }} /usr/bin/runitor -- /home/restic/restic-backup.sh
user: restic user: restic
become: true become: true
@ -63,18 +72,11 @@
hour: 2 hour: 2
minute: 0 minute: 0
weekday: 0 weekday: 0
job: /home/restic/backrest.sh cron_forget job: CHECK_UUID={{ vault_restic_forget_healthchecks_id }} /usr/bin/runitor -- /home/restic/restic-forget.sh
user: restic user: restic
become: true become: true
when: restic_forget when: restic_forget
- name: backrest fail2ban config
template:
src: files/backrest-logrotate
dest: /etc/logrotate.d/backrest
mode: "0600"
become: true
- name: Install pacman post script - name: Install pacman post script
template: template:
src: files/restic-post.sh src: files/restic-post.sh