created update-prod-servers.sh , .service , .timer to trigger update-rocky-prod.yml playbook every friday at 9:00PM then send a report to a discord webhook

This commit is contained in:
WolfyDelta
2026-07-03 14:35:47 -04:00
parent 04fdcc725e
commit d086e7bcaf
7 changed files with 172 additions and 243 deletions
+35 -16
View File
@@ -1,23 +1,42 @@
#!/bin/bash
set -euo pipefail
#!/usr/bin/env bash
set -Eeuo pipefail
LOG_DIR="/home/wolfy/log/ansible-prod"
mkdir -p "$LOG_DIR"
# ------------------------------------------------------------
# Ansible Rocky production patching wrapper
# Intended to be run by systemd service/timer
# ------------------------------------------------------------
TIMESTAMP="$(date '+%Y-%m-%d_%H-%M-%S')"
LOG_FILE="$LOG_DIR/ubuntu-prod-update-$TIMESTAMP.log"
ANSIBLE_PROJECT="/opt/Ansible"
VENV_PATH="${ANSIBLE_PROJECT}/.venv"
exec >>"$LOG_FILE" 2>&1
PLAYBOOK="${ANSIBLE_PROJECT}/playbooks/update-rocky-prod.yml"
LOCK_FILE="/tmp/update-rocky-prod.lock"
echo "========================================"
echo "Prod patching run started: $(date -Is)"
echo "========================================"
ANSIBLE_PLAYBOOK="${VENV_PATH}/bin/ansible-playbook"
cd /home/wolfy/ansible
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
}
/home/wolfy/ansible-env/bin/ansible-playbook playbooks/update-prod-servers.yml
fail() {
log "ERROR: $*"
exit 1
}
echo
echo "========================================"
echo "Prod patching run completed: $(date -Is)"
echo "========================================"
log "Starting Rocky production patching"
[[ -d "$VENV_PATH" ]] || fail "Python virtual environment not found: $VENV_PATH"
[[ -x "$ANSIBLE_PLAYBOOK" ]] || fail "ansible-playbook not found or not executable: $ANSIBLE_PLAYBOOK"
[[ -f "$PLAYBOOK" ]] || fail "Playbook not found: $PLAYBOOK"
(
flock -n 200 || fail "Another patching run is already active"
cd "$ANSIBLE_PROJECT"
"$ANSIBLE_PLAYBOOK" \
"$PLAYBOOK"
) 200>"$LOCK_FILE"
log "Finished Rocky production patching"