add new roles

This commit is contained in:
2026-03-27 17:56:57 +01:00
parent 15f6a52487
commit bf1f284780
8 changed files with 2491 additions and 25 deletions

View 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."

View 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"