Replace custom restic logs with runitor
This commit is contained in:
parent
f5154d1683
commit
16e9952b2f
5 changed files with 26 additions and 71 deletions
|
@ -1,8 +0,0 @@
|
||||||
/home/restic/log/*.log {
|
|
||||||
daily
|
|
||||||
rotate 14
|
|
||||||
missingok
|
|
||||||
compress
|
|
||||||
nodateext
|
|
||||||
notifempty
|
|
||||||
}
|
|
|
@ -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"
|
set -x
|
||||||
export RESTIC_LOG_FILE="$RESTIC_LOG_DIR/$1-$(date -Iseconds).log"
|
|
||||||
|
|
||||||
export FORGET_OPTIONS="--keep-daily 30 --keep-monthly 3 --group-by host"
|
exec restic $@
|
||||||
|
|
||||||
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
|
|
||||||
restic forget $FORGET_OPTIONS $@
|
|
||||||
}
|
|
||||||
|
|
||||||
# Prune orphaned files
|
|
||||||
prune() {
|
|
||||||
set -x
|
|
||||||
restic --verbose prune $@
|
|
||||||
}
|
|
||||||
|
|
||||||
# Run restic, but with environment variables set
|
|
||||||
exec () {
|
|
||||||
set -x
|
|
||||||
restic $@
|
|
||||||
}
|
|
||||||
|
|
||||||
# Run the things
|
|
||||||
"$@"
|
|
||||||
|
|
5
ansible/roles/restic/files/restic-backup.sh
Normal file
5
ansible/roles/restic/files/restic-backup.sh
Normal 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
|
5
ansible/roles/restic/files/restic-forget.sh
Normal file
5
ansible/roles/restic/files/restic-forget.sh
Normal 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
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue