#!/usr/bin/env bash # Wrapper do bezobsługowego uruchamiania playbook_autopilot.yml z crona. # - flock zapobiega nakładającym się uruchomieniom (np. jeśli poprzedni przebieg # jeszcze trwa, gdy odpala się kolejny). # - Wynik (stdout+stderr) trafia z timestampem do LOG_FILE. # - Reboot NIE jest wykonywany automatycznie — playbook_fleet_report.yml tylko # zgłasza, które hosty go wymagają (patrz reports/). set -uo pipefail ANSIBLE_DIR="/root/ansible" LOCK_FILE="/var/run/ansible-autopilot.lock" LOG_FILE="/var/log/ansible-autopilot.log" TARGET_GROUP="${TARGET_GROUP:-Update-now}" exec 200>"${LOCK_FILE}" if ! flock -n 200; then echo "$(date '+%Y-%m-%d %H:%M:%S') [run-autopilot] Poprzedni przebieg wciąż trwa, pomijam." >>"${LOG_FILE}" exit 0 fi cd "${ANSIBLE_DIR}" { echo "===== $(date '+%Y-%m-%d %H:%M:%S') [run-autopilot] START (target: ${TARGET_GROUP}) =====" ansible-playbook -i patchmon_inventory.yml \ playbooks/playbook_autopilot.yml \ --limit "${TARGET_GROUP},localhost" rc=$? echo "===== $(date '+%Y-%m-%d %H:%M:%S') [run-autopilot] KONIEC (exit code: ${rc}) =====" } >>"${LOG_FILE}" 2>&1 exit "${rc}"