Compare commits

..

17 Commits

Author SHA1 Message Date
Harwinder Sekhon 3f83e77ec7 Report updated vs already up-to-date hosts in update_system.yml
Check each host for pending packages before upgrading, then print a
per-host status (updated with the package list, up to date, or failed)
and one consolidated summary play with totals.

Failed upgrades are caught per host so they are reported instead of
dropping out of the run, and a final fail task keeps the run non-zero.
The read-only cache refresh and pending checks run with check_mode:
false, so --check works as a dry run.
2026-09-30 21:01:23 -04:00
Harwinder Sekhon 501e81dbc1 Add comments and pending-update reporting to auto_updates.yml
Documents each play/task, and adds per-host and final summary output
showing how many packages are pending on each host.
2026-09-19 19:31:59 -04:00
Harwinder Sekhon 7ad388ba50 Telegram alerts: accept credentials from extra vars or environment, report which is missing
Semaphore variable groups can pass values as extra vars or as environment
variables, and secrets can be either type. Read telegram_bot_token,
TELEGRAM_BOT_TOKEN (extra var) or TELEGRAM_BOT_TOKEN (env), same for the
chat id, and say in the "not configured" message which of the two is
missing so a wrong box or a detached variable group is visible in the log.

Claude-Session: https://claude.ai/code/session_01XEizHawueRXUcxQELRZ8kq
2026-09-06 23:15:11 -04:00
Harwinder Sekhon 5aaa7020ac Fix playbook bugs from review, add Telegram alerts to health and service checks
Review fixes:
- Availability plays: "ping_result is succeeded" is true for unreachable
  hosts, so offline hosts were added to reachable_hosts and failed the
  next play. Test reachability explicitly (7 playbooks).
- bootstrap_lxc: vim-enhanced and mtr-tiny package names, enable CRB next
  to EPEL, add the root key without replacing authorized_keys, validate
  sshd_config edits and restart sshd only on change.
- backup_docker: the command module does not expand $(...); fix rsync
  filter order and add --exclude=*; restart only the containers that were
  stopped, even when rsync fails; read the storage address from the
  inventory; keep semaphore and semaphore-db running.
- new_lxc: community.general.proxmox no longer exists, use
  community.proxmox; node is mini-pc; valid hostname; password or token
  auth; let the module pick the VMID; longer timeout.
- proxmox-backup: surface the vzdump exit code, let vzdump prune with
  keep-last, drop the rename/prune steps that globbed *.zstd.
- time-region: chrony regex no longer comments out its own server line;
  /etc/localtime as a symlink; reuse facts across plays.
- update_pihole_blocklists: FQCN, become: true, changed_when.
- ansible.cfg gathering = smart; update_system only pings ubuntu/rocky.

Telegram alerts:
- health_check: filesystems above disk_warn_pct (default 80), excluding
  efivarfs, and offline hosts.
- service_check: services not running.
- One message per run from localhost, credentials from Semaphore
  (TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID), no_log on the send task,
  prints the alert text when Telegram is not configured.

Claude-Session: https://claude.ai/code/session_01XEizHawueRXUcxQELRZ8kq
2026-09-06 23:06:18 -04:00
harry 0b7e136b24 Update inventories/all.yml 2026-09-07 02:13:22 +00:00
harry b994343825 Update inventories/all.yml 2026-09-07 02:00:43 +00:00
harry 9b57eb1815 Update inventories/all.yml 2026-09-07 01:57:38 +00:00
Harwinder Sekhon 1d351c382a discover_guests: treat any 192.168.x address as LAN, the lab now spans several subnets
Claude-Session: https://claude.ai/code/session_01JEczyvRjfakkiDNkbZA7PR
2026-09-06 20:30:10 -04:00
Harwinder Sekhon 22311ac70e Add discover_guests playbook and README with Semaphore scheduling guide
Claude-Session: https://claude.ai/code/session_01JEczyvRjfakkiDNkbZA7PR
2026-09-06 20:30:10 -04:00
Harwinder Sekhon ce7e2bc205 Add guest playbooks: ssh hardening, reboot check, auto updates, service check, guest agent, admin user
Claude-Session: https://claude.ai/code/session_01JEczyvRjfakkiDNkbZA7PR
2026-09-06 20:30:10 -04:00
Harwinder Sekhon 686080a493 Add repo foundation: proxmox/lxc/vms groups, ansible.cfg, collections, lint configs
- inventory: add proxmox host, lxc and vms groups, critical_services per host
- retarget bootstrap and time-region to ubuntu:rocky so the Proxmox host is untouched
- add ansible.cfg, collections/requirements.yml, .gitignore, .yamllint, .ansible-lint
- remove stale root new_lxc.yml duplicate and the Nextcloud upgrade playbook

Claude-Session: https://claude.ai/code/session_01JEczyvRjfakkiDNkbZA7PR
2026-09-06 20:30:10 -04:00
harry 3e232a30df Update inventories/all.yml 2026-07-04 16:37:28 +00:00
harry 231ae03407 Update inventories/all.yml 2026-06-04 19:25:35 +00:00
harry fa959afa96 Update inventories/all.yml 2026-06-04 19:24:08 +00:00
harwinder 9665dd3bfe Fix health check: RAM formula, exclude snap/overlay, use ASCII output 2026-05-16 17:38:45 -04:00
harwinder d9a1403f52 Add disk and RAM health check playbook
Reports disk usage, memory, and swap per host with warnings
for partitions exceeding 85% usage.
2026-05-16 17:34:36 -04:00
harwinder cf0e62d80c Refactor inventory into OS groups and update playbooks accordingly
Group hosts by OS (ubuntu/rocky) in inventory, refactor playbooks to
use group-targeted plays instead of ansible_os_family conditionals,
add bot host, and add Docker volume backup playbook via rsync to storage.
2026-05-16 17:31:29 -04:00

Diff Content Not Available