Files
ansible/playbooks/health_check.yml
T
Harwinder Sekhon 3f4b067014 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

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JEczyvRjfakkiDNkbZA7PR
2026-09-06 20:30:10 -04:00

63 lines
2.2 KiB
YAML

---
- name: Check Host Availability
hosts: all
gather_facts: false
ignore_unreachable: true
tasks:
- name: Ping hosts to check availability
ansible.builtin.ping:
register: ping_result
ignore_errors: true
ignore_unreachable: true
- name: Add reachable hosts to group
ansible.builtin.group_by:
key: reachable_hosts
when: ping_result is succeeded
- name: Report offline hosts
ansible.builtin.debug:
msg: "{{ inventory_hostname }} - OFFLINE"
when: ping_result is not succeeded
delegate_to: localhost
- name: Disk and RAM Usage Report
hosts: reachable_hosts
become: true
gather_facts: true
tasks:
- name: Get disk usage (excluding snap, overlay, tmpfs)
ansible.builtin.shell: df -h --output=target,size,used,avail,pcent -x tmpfs -x devtmpfs -x squashfs -x overlay | tail -n +2
register: disk_usage
changed_when: false
- name: Calculate memory usage
ansible.builtin.set_fact:
mem_total_mb: "{{ ansible_memtotal_mb }}"
mem_used_mb: "{{ ansible_memory_mb.real.used }}"
mem_pct: "{{ ((ansible_memory_mb.real.used / ansible_memtotal_mb) * 100) | round(1) }}"
swap_total_mb: "{{ ansible_swaptotal_mb }}"
swap_used_mb: "{{ ansible_swaptotal_mb - ansible_swapfree_mb }}"
- name: Print report
ansible.builtin.debug:
msg: |
======================================================
HOST: {{ inventory_hostname }} ({{ ansible_host }})
OS: {{ ansible_distribution }} {{ ansible_distribution_version }}
======================================================
RAM: {{ mem_used_mb }}MB / {{ mem_total_mb }}MB ({{ mem_pct }}%)
SWAP: {{ swap_used_mb }}MB / {{ swap_total_mb }}MB
------------------------------------------------------
DISK:
{{ disk_usage.stdout }}
======================================================
- name: Warn on high disk usage (>85%)
ansible.builtin.debug:
msg: "WARNING: {{ item.split()[-1] }} usage on {{ item.split()[0] }} of {{ inventory_hostname }}"
loop: "{{ disk_usage.stdout_lines }}"
when: (item.split()[-1] | replace('%', '') | int) > 85