Add backup to node003
This commit is contained in:
		
							parent
							
								
									3549901946
								
							
						
					
					
						commit
						7638b24bfe
					
				
					 4 changed files with 35 additions and 9 deletions
				
			
		| 
						 | 
					@ -1,2 +1,8 @@
 | 
				
			||||||
ansible_port: "{{ vault_node003.ansible_port }}"
 | 
					ansible_port: "{{ vault_node003.ansible_port }}"
 | 
				
			||||||
ansible_user: "{{ vault_node003.ansible_user }}"
 | 
					ansible_user: "{{ vault_node003.ansible_user }}"
 | 
				
			||||||
 | 
					host_backup:
 | 
				
			||||||
 | 
					  backup:
 | 
				
			||||||
 | 
					    hc_uid: "{{ vault_node003.backup.hc_uid }}"
 | 
				
			||||||
 | 
					    uptime_kuma_token: "{{ vault_node003.backup.uptime_kuma_token }}"
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - minio_data
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,8 @@
 | 
				
			||||||
  roles:
 | 
					  roles:
 | 
				
			||||||
    - role: common
 | 
					    - role: common
 | 
				
			||||||
      tags: [always]
 | 
					      tags: [always]
 | 
				
			||||||
 | 
					    - role: backup
 | 
				
			||||||
 | 
					      tags: [backup]
 | 
				
			||||||
    - role: caddy
 | 
					    - role: caddy
 | 
				
			||||||
      tags: [caddy, reverse-proxy, webserver]
 | 
					      tags: [caddy, reverse-proxy, webserver]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,18 +6,37 @@ set -a
 | 
				
			||||||
. "{{ service_path }}/service.env"
 | 
					. "{{ service_path }}/service.env"
 | 
				
			||||||
set +a
 | 
					set +a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					duration_start=$(date +%s)
 | 
				
			||||||
 | 
					_duration_get () {
 | 
				
			||||||
 | 
						duration_end=$(date +%s)
 | 
				
			||||||
 | 
						duration=$((duration_end - duration_start))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
hc_url="https://hc-ping.com/$HC_UID"
 | 
					hc_url="https://hc-ping.com/$HC_UID"
 | 
				
			||||||
 | 
					uptime_kuma_url="https://status.serguzim.me/api/push/$UPTIME_KUMA_TOKEN"
 | 
				
			||||||
_hc_ping () {
 | 
					_hc_ping () {
 | 
				
			||||||
	curl -fsSL --retry 3 "$hc_url$1" >/dev/null
 | 
						curl -fsSL --retry 3 "$hc_url$1" >/dev/null
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					_uptime_kuma_ping () {
 | 
				
			||||||
 | 
						duration=_duration_get
 | 
				
			||||||
 | 
						curl -fsSL --retry 3 \
 | 
				
			||||||
 | 
							--url-query "status=$1" \
 | 
				
			||||||
 | 
							--url-query "msg=$2" \
 | 
				
			||||||
 | 
							--url-query "ping=${duration}000" \
 | 
				
			||||||
 | 
							"$uptime_kuma_url" >/dev/null
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_hc_fail () {
 | 
					_fail () {
 | 
				
			||||||
	_hc_ping "/fail"
 | 
						_hc_ping "/fail"
 | 
				
			||||||
 | 
						_uptime_kuma_ping "down" "$1"
 | 
				
			||||||
	exit 1
 | 
						exit 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					_success () {
 | 
				
			||||||
 | 
						_hc_ping
 | 
				
			||||||
 | 
						_uptime_kuma_ping "up" "backup successful"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_hc_ping "/start"
 | 
					_hc_ping "/start"
 | 
				
			||||||
duration_start=$(date +%s)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
BACKUP_LOCATION="$(mktemp -d)"
 | 
					BACKUP_LOCATION="$(mktemp -d)"
 | 
				
			||||||
export BACKUP_LOCATION
 | 
					export BACKUP_LOCATION
 | 
				
			||||||
| 
						 | 
					@ -28,17 +47,13 @@ for file in "{{ service_path }}/backup.d/"*
 | 
				
			||||||
do
 | 
					do
 | 
				
			||||||
	echo ""
 | 
						echo ""
 | 
				
			||||||
	echo "running $file"
 | 
						echo "running $file"
 | 
				
			||||||
	time "$file" || _hc_fail
 | 
						time "$file" || _fail "fail while running $file"
 | 
				
			||||||
done || true
 | 
					done || true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cd "{{ service_path }}"
 | 
					cd "{{ service_path }}"
 | 
				
			||||||
docker compose run --rm -v "$BACKUP_LOCATION:/backup/misc" app backup /backup || _hc_fail
 | 
					docker compose run --rm -v "$BACKUP_LOCATION:/backup/misc" app backup /backup || _fail "fail during restic backup"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
duration_end=$(date +%s)
 | 
					_success
 | 
				
			||||||
_hc_ping
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
duration=$((duration_end - duration_start))
 | 
					 | 
				
			||||||
curl -fsSL --retry 3 "https://status.serguzim.me/api/push/$UPTIME_KUMA_TOKEN?status=up&msg=OK&ping=${duration}000"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
rm -rf "$BACKUP_LOCATION"
 | 
					rm -rf "$BACKUP_LOCATION"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,9 @@ backup_compose:
 | 
				
			||||||
      app:
 | 
					      app:
 | 
				
			||||||
        build:
 | 
					        build:
 | 
				
			||||||
          context: .
 | 
					          context: .
 | 
				
			||||||
 | 
					        entrypoint:
 | 
				
			||||||
 | 
					          - /usr/bin/restic
 | 
				
			||||||
 | 
					          - --retry-lock=1m
 | 
				
			||||||
        restart: never
 | 
					        restart: never
 | 
				
			||||||
        hostname: "{{ ansible_facts.hostname }}"
 | 
					        hostname: "{{ ansible_facts.hostname }}"
 | 
				
			||||||
    volumes: "{{ host_backup.backup.volumes | map_backup_volumes }}"
 | 
					    volumes: "{{ host_backup.backup.volumes | map_backup_volumes }}"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue