add new roles
This commit is contained in:
65
playbooks/roles/backup/files/backup_script.sh
Normal file
65
playbooks/roles/backup/files/backup_script.sh
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Exit on error
|
||||
set -euo pipefail
|
||||
|
||||
## Variables
|
||||
LOGFILE="/home/alarm/backup/backup.log"
|
||||
MACHINE_IP="192.168.178.67"
|
||||
|
||||
BKP_PATH="/home/alarm/backup/dump/"
|
||||
MACHINE_PATH="${BKP_PATH}machine/"
|
||||
HOME_PATH="${MACHINE_PATH}home/"
|
||||
|
||||
|
||||
## Check if backup already ran today
|
||||
SEC_SINCE_BKP=$(($(date +%s) - $(date +%s -r $LOGFILE)))
|
||||
HOURS_SINCE_BKP=$((SEC_SINCE_BKP/3600))
|
||||
if [ "$HOURS_SINCE_BKP" -le 24 ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
## Check if machine is up
|
||||
if ! ping -c 1 -W 3 "$MACHINE_IP" &>/dev/null; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
## Backup machine
|
||||
# Home Dir
|
||||
echo "[INFO] $(date --rfc-3339 s) - Syncing machine:/home/vashqlf/..."
|
||||
HOME_TARGETS=(
|
||||
"Code"
|
||||
".config"
|
||||
"Documents"
|
||||
"Pictures"
|
||||
".profile"
|
||||
".ssh"
|
||||
".xprofile"
|
||||
".Xresources"
|
||||
".zshenv"
|
||||
".zshrc"
|
||||
)
|
||||
|
||||
for i in "${HOME_TARGETS[@]}"; do
|
||||
rsync -avP "machine:/home/vashqlf/${i}" "${HOME_PATH}${i}"
|
||||
done
|
||||
echo "[INFO] $(date --rfc-3339 s) - Done!"
|
||||
|
||||
## Backup cloud hosts
|
||||
# Strato1: vaultwarden
|
||||
echo "[INFO] $(date --rfc-3339 s) - Syncing strato1:/home/pw-manager/vaultwarden..."
|
||||
rsync -avP "strato1:/home/pw-manager/vaultwarden" "${BKP_PATH}vaultwarden"
|
||||
echo "[INFO] $(date --rfc-3339 s) - Done!"
|
||||
|
||||
# Strato3: Checkmk
|
||||
echo "[INFO] $(date --rfc-3339 s) - Syncing strato3:/usr/local/share/cmk-bkp..."
|
||||
rsync -avP "strato3:/usr/local/share/cmk-bkp" "${BKP_PATH}cmk-bkp"
|
||||
echo "[INFO] $(date --rfc-3339 s) - Done!"
|
||||
|
||||
echo "[INFO] $(date --rfc-3339 s) - Syncing completed, nothing more to do."
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
37
playbooks/roles/backup/tasks/main.yml
Normal file
37
playbooks/roles/backup/tasks/main.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
#SPDX-License-Identifier: MIT-0
|
||||
---
|
||||
# tasks to make the host a backup-node
|
||||
|
||||
- name: Create directory for backup utilities
|
||||
ansible.builtin.file:
|
||||
path: /home/alarm/backup/dump/machine/home
|
||||
state: directory
|
||||
owner: alarm
|
||||
group: alarm
|
||||
mode: '0744'
|
||||
|
||||
- name: Create empty log file
|
||||
ansible.builtin.file:
|
||||
path: /home/alarm/backup/backup.log
|
||||
state: touch
|
||||
mode: '0644'
|
||||
|
||||
- name: Set modification date to 1 week ago
|
||||
ansible.builtin.command:
|
||||
cmd: touch -d "1 week ago" /home/alarm/backup/backup.log
|
||||
|
||||
- name: Copy backup script
|
||||
ansible.builtin.copy:
|
||||
src: backup_script.sh
|
||||
dest: /home/alarm/backup/backup_script.sh
|
||||
owner: alarm
|
||||
group: alarm
|
||||
mode: '0755'
|
||||
|
||||
- name: Add cronjob for daily backups
|
||||
ansible.builtin.cron:
|
||||
name: "daily backup"
|
||||
user: alarm
|
||||
minute: "33"
|
||||
hour: "3"
|
||||
job: "/home/alarm/backup/backup_script.sh > /home/alarm/backup/backup.log 2>&1"
|
||||
Reference in New Issue
Block a user