-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbackup.service
69 lines (64 loc) · 2.43 KB
/
backup.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[Unit]
Description=Backup Service using Restic {{ '(Initial Run)' if instance_type == 'initial' }}
After=network-online.target {{ settings.systemd.after }}
Wants=network-online.target {{ settings.systemd.wants }}
{% if instance_type != 'initial' %}
Requires=%n-initial {{ settings.systemd.requires }}
{% elif settings.systemd.requires %}
Requires={{ settings.systemd.requires }}
{% endif %}
{% if settings.systemd.onfailure %}
OnFailure={{ settings.systemd.onfailure }}
{% endif %}
[Service]
Type=oneshot
{% if instance_type = 'initial' %}
TimeoutStartSec={{ settings.initial_job_runtime }}
{% else %}
TimeoutStartSec={{ settings.max_job_runtime }}
{% endif %}
User={{ settings.user }}
Group={{ settings.user }}
Environment=UNITNAME=%n
Environment=HOME={{ settings.home_dir }}
Environment=USER={{ settings.user }}
EnvironmentFile={{ settings.env_file }}
WorkingDirectory={{ settings.home_dir }}
PassEnvironment=UNITNAME HOME USER RESTIC_REPOSITORY RESTIC_PASSWORD {% if settings.env %}{% for k,v in settings.env.items() %}{{ k }} {% endfor %}{% endif %}
{% if instance_type == 'initial' %}
ExecStartPre=/usr/bin/bash -c \
' \
if test -e "/usr/local/lib/gitops-library.sh"; then \
. "/usr/local/lib/gitops-library.sh" \
else \
set_tag() { echo "$2" > "{{ settings.var_dir }}/tags/$1" } \
fi \
set_tag backup/backup_initial_start_timestamp $(date +%s) \
'
ExecStart=/usr/bin/bash -c \
' \
if test -e "/usr/local/lib/gitops-library.sh"; then \
. "/usr/local/lib/gitops-library.sh" \
else \
set_tag() { echo "$2" > "{{ settings.var_dir }}/tags/$1" } \
fi \
export UNITNAME HOME USER RESTIC_REPOSITORY RESTIC_PASSWORD {% if settings.env %}{% for k,v in settings.env.items() %}{{ k }} {% endfor %}{% endif %} \
/usr/local/lib/backup-service.sh --from-systemd-service \
set_tag backup/backup_initial_end_timestamp $(date +%s) \
'
{% else %}
ExecStart=/usr/bin/bash -c \
' \
if test -e "/usr/local/lib/gitops-library.sh"; then \
. "/usr/local/lib/gitops-library.sh" \
else \
get_tag_fullpath() { echo "{{ settings.var_dir }}/tags/$1" } \
fi \
if test -e "$(get_tag_fullpath backup/backup_initial_end_timestamp)"; then \
export UNITNAME HOME USER RESTIC_REPOSITORY RESTIC_PASSWORD {% if settings.env %}{% for k,v in settings.env.items() %}{{ k }} {% endfor %}{% endif %} \
/usr/local/lib/backup-service.sh --from-systemd-service \
else \
systemctl start --no-block backup-initial \
fi \
'
{% endif %}