Compare commits
No commits in common. "07a5dd96b2bac6be00a4e75ab583a3556804287a" and "55676661dbeef99be8b48e222c7a95b7a01479bb" have entirely different histories.
07a5dd96b2
...
55676661db
@ -1,4 +1,2 @@
|
|||||||
---
|
---
|
||||||
rclone_arch: amd64
|
rclone_package_url: https://downloads.rclone.org/v1.50.1/rclone-v1.50.1-linux-amd64.deb
|
||||||
rclone_version: 1.50.2
|
|
||||||
rclone_package_url: "https://downloads.rclone.org/v{{ rclone_version }}/rclone-v{{ rclone_version }}-linux-{{ rclone_arch }}.deb"
|
|
||||||
|
@ -1,96 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
SERVICE=minecraft.service
|
|
||||||
VAR_DIR=/opt/minecraft/var
|
|
||||||
WAIT=30
|
|
||||||
VERBOSE=${VERBOSE:-4}
|
|
||||||
|
|
||||||
error_exit() {
|
|
||||||
printf "%s\n" "$1" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_server() {
|
|
||||||
local unit="${1:-$SERVICE}"
|
|
||||||
local attempts="${2:-$WAIT}"
|
|
||||||
|
|
||||||
if ! systemctl -q is-active "$unit"; then
|
|
||||||
printf "%s is already stopped\n" "$unit"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
systemctl -q stop "$unit"
|
|
||||||
|
|
||||||
while systemctl -q is-active "$unit"; do
|
|
||||||
printf "waiting for %s to stop ... (%s)\n" "$unit" "$attempts"
|
|
||||||
((attempts--))
|
|
||||||
if ((attempts == 0)); then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
start_server() {
|
|
||||||
local unit="${1:-$SERVICE}"
|
|
||||||
local attempts="${2:-$WAIT}"
|
|
||||||
|
|
||||||
if systemctl -q is-active "$unit"; then
|
|
||||||
printf "%s is already started\n" "$unit"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
systemctl -q start "$unit"
|
|
||||||
|
|
||||||
while ! systemctl -q is-active "$unit"; do
|
|
||||||
printf "waiting for %s to start ... (%d)\n" "$unit" "$attempts"
|
|
||||||
((attempts--))
|
|
||||||
if ((attempts == 0)); then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
open_files() {
|
|
||||||
local dir=${1-$VAR_DIR}
|
|
||||||
local attempts="${2:-$WAIT}"
|
|
||||||
|
|
||||||
while (($(lsof +D "$dir" | wc -l) > 0)); do
|
|
||||||
printf "waiting for open files ... (%d)\n" "$attempts"
|
|
||||||
((attempts--))
|
|
||||||
if ((attempts == 0)); then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
main() {
|
|
||||||
if [ "$1" == "pre" ]; then
|
|
||||||
printf "stopping %s\n" $SERVICE
|
|
||||||
if ! stop_server $SERVICE; then
|
|
||||||
error_exit "Failed to stop $SERVICE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "checking for open files\n"
|
|
||||||
if ! open_files $VAR_DIR; then
|
|
||||||
error_exit "Open files exist in $VAR_DIR"
|
|
||||||
fi
|
|
||||||
elif [ "$1" == "post" ]; then
|
|
||||||
printf "starting %s\n" $SERVICE
|
|
||||||
if ! start_server $SERVICE; then
|
|
||||||
error_exit "Failed to start $SERVICE"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
15
roles/restic/files/restic-job.sh
Executable file → Normal file
15
roles/restic/files/restic-job.sh
Executable file → Normal file
@ -20,7 +20,6 @@ fi
|
|||||||
|
|
||||||
JOB_PATH="${RESTIC_ETC_PATH}/jobs/${JOB}"
|
JOB_PATH="${RESTIC_ETC_PATH}/jobs/${JOB}"
|
||||||
JOB_ENV="${JOB_PATH}/env.sh"
|
JOB_ENV="${JOB_PATH}/env.sh"
|
||||||
HOOKS_PATH="${JOB_PATH}/hooks.d"
|
|
||||||
|
|
||||||
if [ ! -r "$JOB_ENV" ]; then
|
if [ ! -r "$JOB_ENV" ]; then
|
||||||
error_exit "${JOB_ENV} does not exist"
|
error_exit "${JOB_ENV} does not exist"
|
||||||
@ -49,13 +48,6 @@ if [ -z "${PATHS+x}" ]; then
|
|||||||
error_exit "\$PATHS is not set"
|
error_exit "\$PATHS is not set"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "job '%s' started\n" "$JOB"
|
|
||||||
|
|
||||||
if [ -d "${HOOKS_PATH}" ]; then
|
|
||||||
printf "running '%s' job pre-hooks\n" "$JOB"
|
|
||||||
run-parts -v -a pre "${HOOKS_PATH}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
counter=0
|
counter=0
|
||||||
sleep=1
|
sleep=1
|
||||||
rc=1
|
rc=1
|
||||||
@ -80,11 +72,4 @@ done
|
|||||||
|
|
||||||
if [ $rc -ne 0 ] && [ $counter -eq "$MAX_ATTEMPTS" ]; then
|
if [ $rc -ne 0 ] && [ $counter -eq "$MAX_ATTEMPTS" ]; then
|
||||||
printf "restic job timed out, exiting\n"
|
printf "restic job timed out, exiting\n"
|
||||||
else
|
|
||||||
printf "job '%s' complete\n" "$JOB"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d "${HOOKS_PATH}" ]; then
|
|
||||||
printf "running '%s' job post-hooks\n" "$JOB"
|
|
||||||
run-parts -v -a post "${HOOKS_PATH}"
|
|
||||||
fi
|
fi
|
||||||
|
16
roles/restic/files/restic-tidy.sh
Executable file → Normal file
16
roles/restic/files/restic-tidy.sh
Executable file → Normal file
@ -10,10 +10,8 @@ error_exit() {
|
|||||||
RESTIC_ETC_PATH=${RESTIC_ETC_PATH:-/etc/restic}
|
RESTIC_ETC_PATH=${RESTIC_ETC_PATH:-/etc/restic}
|
||||||
RESTIC_PATH=${RESTIC_PATH:-/usr/local/bin/restic}
|
RESTIC_PATH=${RESTIC_PATH:-/usr/local/bin/restic}
|
||||||
|
|
||||||
# initial sleep
|
|
||||||
MAX_ATTEMPTS=60
|
MAX_ATTEMPTS=60
|
||||||
MAX_SLEEP=43200 # 12 hours
|
MAX_SLEEP=43200 # 12 hours
|
||||||
SLEEP="$(((RANDOM % MAX_SLEEP) + 1))s"
|
|
||||||
REPO=$1
|
REPO=$1
|
||||||
|
|
||||||
if [ -z "$REPO" ]; then
|
if [ -z "$REPO" ]; then
|
||||||
@ -36,16 +34,8 @@ KEEP_WEEKLY=${KEEP_WEEKLY:-5}
|
|||||||
KEEP_MONTHLY=${KEEP_MONTHLY:-12}
|
KEEP_MONTHLY=${KEEP_MONTHLY:-12}
|
||||||
KEEP_YEARLY=${KEEP_YEARLY:-10}
|
KEEP_YEARLY=${KEEP_YEARLY:-10}
|
||||||
|
|
||||||
printf "started, keep hourly:%d daily:%d weekly:%d monthly:%d year:%d\n" \
|
# initial sleep
|
||||||
"$KEEP_HOURLY" \
|
sleep "$(((RANDOM % MAX_SLEEP) + 1))s"
|
||||||
"$KEEP_DAILY" \
|
|
||||||
"$KEEP_WEEKLY" \
|
|
||||||
"$KEEP_MONTHLY" \
|
|
||||||
"$KEEP_YEARLY"
|
|
||||||
|
|
||||||
printf "sleeping for %s (initial)\n" $SLEEP
|
|
||||||
|
|
||||||
sleep $SLEEP
|
|
||||||
|
|
||||||
counter=0
|
counter=0
|
||||||
sleep=1
|
sleep=1
|
||||||
@ -75,6 +65,4 @@ done
|
|||||||
|
|
||||||
if [ $rc -ne 0 ] && [ $counter -eq "$MAX_ATTEMPTS" ]; then
|
if [ $rc -ne 0 ] && [ $counter -eq "$MAX_ATTEMPTS" ]; then
|
||||||
printf "tidy timed out, exiting\n"
|
printf "tidy timed out, exiting\n"
|
||||||
else
|
|
||||||
printf "complete\n"
|
|
||||||
fi
|
fi
|
||||||
|
@ -7,19 +7,7 @@
|
|||||||
mode: 0755
|
mode: 0755
|
||||||
state: directory
|
state: directory
|
||||||
|
|
||||||
- name: create job hooks
|
- name: create repo environment helper
|
||||||
copy:
|
|
||||||
src: "hooks/{{ hook_item }}"
|
|
||||||
dest: "{{ restic_etc_path }}/jobs/{{ item.name }}/hooks.d/{{ hook_item | basename | splitext | first }}"
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: 0755
|
|
||||||
loop: "{{ item.hooks | default([]) }}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: hook_item
|
|
||||||
when: item.hooks is defined
|
|
||||||
|
|
||||||
- name: create job environment helper
|
|
||||||
template:
|
template:
|
||||||
src: job-env.sh.j2
|
src: job-env.sh.j2
|
||||||
dest: "{{ restic_etc_path }}/jobs/{{ item.name }}/env.sh"
|
dest: "{{ restic_etc_path }}/jobs/{{ item.name }}/env.sh"
|
||||||
@ -27,15 +15,6 @@
|
|||||||
group: root
|
group: root
|
||||||
mode: 0400
|
mode: 0400
|
||||||
|
|
||||||
- name: install hooks
|
|
||||||
file:
|
|
||||||
path: "{{ restic_etc_path }}/jobs/{{ item.name }}/hooks.d"
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: 0755
|
|
||||||
state: directory
|
|
||||||
when: item.hooks is defined and item.hooks | length
|
|
||||||
|
|
||||||
- name: create job exclude file
|
- name: create job exclude file
|
||||||
template:
|
template:
|
||||||
src: exclude.txt.j2
|
src: exclude.txt.j2
|
||||||
@ -54,4 +33,4 @@
|
|||||||
weekday: "{{ item.cron.weekday | default(omit) }}"
|
weekday: "{{ item.cron.weekday | default(omit) }}"
|
||||||
user: "{{ item.cron.user | default('root') }}"
|
user: "{{ item.cron.user | default('root') }}"
|
||||||
state: "{{ item.cron.state | default('present') }}"
|
state: "{{ item.cron.state | default('present') }}"
|
||||||
job: "( {{ restic_bin_path }}/restic-job {{ item.name }} | logger --id=$$ -t restic-job -p user.info ) 2>&1 | logger --id=$$ -t restic-job -p user.err"
|
job: "{{ restic_bin_path }}/restic-job {{ item.name }}"
|
||||||
|
@ -60,4 +60,4 @@
|
|||||||
minute: "{{ 60 | random(seed=inventory_hostname) }}"
|
minute: "{{ 60 | random(seed=inventory_hostname) }}"
|
||||||
user: root
|
user: root
|
||||||
state: present
|
state: present
|
||||||
job: "( {{ restic_bin_path }}/restic-tidy {{ item.name }} | logger --id=$$ -t restic-tidy -p user.info ) 2>&1 | logger --id=$$ -t restic-tidy -p user.err"
|
job: "{{ restic_bin_path }}/restic-tidy {{ item.name }}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user