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:
+35
-16
@@ -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"
|
||||
Reference in New Issue
Block a user