v1.0.0
This commit is contained in:
11
cron/ansible-autopilot.logrotate
Normal file
11
cron/ansible-autopilot.logrotate
Normal file
@@ -0,0 +1,11 @@
|
||||
# Przykładowa konfiguracja logrotate dla logu bezobsługowych przebiegów autopilot.
|
||||
# Instalacja: sudo cp cron/ansible-autopilot.logrotate /etc/logrotate.d/ansible-autopilot
|
||||
/var/log/ansible-autopilot.log {
|
||||
weekly
|
||||
rotate 8
|
||||
compress
|
||||
delaycompress
|
||||
missingok
|
||||
notifempty
|
||||
copytruncate
|
||||
}
|
||||
16
cron/crontab.example
Normal file
16
cron/crontab.example
Normal file
@@ -0,0 +1,16 @@
|
||||
# Przykładowy wpis crontab dla bezobsługowego zarządzania flotą przez PatchMon + Ansible.
|
||||
#
|
||||
# Instalacja:
|
||||
# crontab -e
|
||||
# (wklej poniższy wiersz, dostosuj godzinę)
|
||||
#
|
||||
# albo jako plik w /etc/cron.d/ (wtedy trzeba dodać pole z użytkownikiem, np. "root"):
|
||||
# sudo cp crontab.example /etc/cron.d/ansible-autopilot
|
||||
#
|
||||
# Cotygodniowo, w niedzielę o 03:30: aktualizacja pakietów + sprzątanie + raport floty.
|
||||
# Log trafia do /var/log/ansible-autopilot.log (patrz cron/ansible-autopilot.logrotate).
|
||||
30 3 * * 0 /root/ansible/cron/run-autopilot.sh
|
||||
|
||||
# Opcjonalnie: sam raport stanu floty (bez aktualizacji) codziennie o 07:00,
|
||||
# żeby mieć świeże dane o dysku/reboot-required do porannego przeglądu.
|
||||
# 0 7 * * * cd /root/ansible && /usr/bin/ansible-playbook -i patchmon_inventory.yml playbooks/playbook_fleet_report.yml --limit "Update-now,localhost" >> /var/log/ansible-autopilot.log 2>&1
|
||||
32
cron/run-autopilot.sh
Executable file
32
cron/run-autopilot.sh
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user