Files
homelab-optimized/ansible/automation/scripts/run_weekly.sh
Gitea Mirror Bot 75d4f4e02b
Some checks failed
Documentation / Build Docusaurus (push) Failing after 5m0s
Documentation / Deploy to GitHub Pages (push) Has been skipped
Sanitized mirror from private repository - 2026-03-29 13:33:25 UTC
2026-03-29 13:33:25 +00:00

46 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Weekly Ansible automation runner
# Runs health_check and disk_usage_report across all active hosts.
# Installed as a cron job on homelab-vm — runs every Sunday at 06:00.
#
# Logs: /home/homelab/organized/repos/homelab/ansible/automation/logs/
# Alerts: sent via ntfy on any CRITICAL status (configured in health_check.yml)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
AUTOMATION_DIR="$(dirname "$SCRIPT_DIR")"
LOG_DIR="$AUTOMATION_DIR/logs"
TIMESTAMP="$(date +%F_%H-%M-%S)"
mkdir -p "$LOG_DIR"
echo "=== Weekly Ansible run started: $TIMESTAMP ===" | tee "$LOG_DIR/weekly_${TIMESTAMP}.log"
# Pull latest repo changes first
cd "$(dirname "$(dirname "$AUTOMATION_DIR")")"
git pull --rebase --autostash >> "$LOG_DIR/weekly_${TIMESTAMP}.log" 2>&1 || true
cd "$AUTOMATION_DIR"
# Skip pi-5-kevin (offline)
LIMIT="active:!pi-5-kevin"
echo "--- Health check ---" | tee -a "$LOG_DIR/weekly_${TIMESTAMP}.log"
ansible-playbook playbooks/health_check.yml \
-i hosts.ini \
--limit "$LIMIT" \
-e "ntfy_url=https://ntfy.vish.gg/homelab-alerts" \
2>&1 | tee -a "$LOG_DIR/weekly_${TIMESTAMP}.log"
echo "--- Disk usage report ---" | tee -a "$LOG_DIR/weekly_${TIMESTAMP}.log"
ansible-playbook playbooks/disk_usage_report.yml \
-i hosts.ini \
--limit "$LIMIT" \
2>&1 | tee -a "$LOG_DIR/weekly_${TIMESTAMP}.log"
echo "=== Weekly run complete: $(date +%F_%H-%M-%S) ===" | tee -a "$LOG_DIR/weekly_${TIMESTAMP}.log"
# Rotate logs — keep last 12 weeks
find "$LOG_DIR" -name "weekly_*.log" -mtime +84 -delete