Files
ansible/validation.yaml
T

61 lines
2.0 KiB
YAML

---
- name: Post-deployment validation and health checks
hosts: servers
gather_facts: true
become: false
tasks:
- name: Verify SSH connectivity on custom port
tags: validation, networking
ansible.builtin.wait_for:
port: "{{ security_ssh_port | default(22) }}"
host: "{{ ansible_host | default(inventory_hostname) }}"
timeout: 60
delay: 5
state: started
- name: Check critical system services
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
loop:
- ssh
- fail2ban
tags: validation
failed_when: false
- name: Run comprehensive system health checks
tags: validation, health
block:
- name: Set root mount fact
ansible.builtin.set_fact:
root_mount: "{{ ansible_mounts | selectattr('mount', 'equalto', '/') | list | first }}"
- name: Check load average
ansible.builtin.command:
cmd: cat /proc/loadavg
register: load_avg
changed_when: false
- name: Set load average value
ansible.builtin.set_fact:
load_avg_1m: "{{ load_avg.stdout.split()[0] }}"
- name: Check Docker status
ansible.builtin.command:
cmd: docker info
register: docker_status
changed_when: false
failed_when: false
- name: Display comprehensive health status
tags: always, health
ansible.builtin.debug:
msg:
- "Health check results for {{ inventory_hostname }}:"
- "Disk usage: {{ ((root_mount.size_total - root_mount.size_available) / root_mount.size_total * 100) | round(2) }}%"
- "Memory usage: {{ ((ansible_memtotal_mb - ansible_memfree_mb) / ansible_memtotal_mb * 100) | round(2) }}%"
- "Load average (1m): {{ load_avg_1m }}"
- "Docker: {{ 'healthy' if docker_status.rc == 0 else 'unavailable' }}"