homelab_automation/ansible/playbooks/builtin/_builtin_collect_disk_usage.yml

40 lines
1.9 KiB
YAML

---
# Builtin Playbook: Collecte de l'espace disque
- name: Collect Disk Usage Information
hosts: all
become: false
gather_facts: false
vars:
_builtin_playbook: true
_builtin_id: collect_disk_usage
_collect_metrics: true
tasks:
- name: Get disk usage for all mount points
ansible.builtin.shell: |
df -BG --output=target,size,used,avail,pcent -x tmpfs -x devtmpfs -x squashfs 2>/dev/null | tail -n +2 | awk '{
gsub("G",""); gsub("%","");
printf "{\"mount\":\"%s\",\"total_gb\":%s,\"used_gb\":%s,\"free_gb\":%s,\"usage_percent\":%s}\n", $1, $2, $3, $4, $5
}' | paste -sd "," | awk '{print "["$0"]"}' || echo '[]'
register: disk_info
changed_when: false
- name: Get root partition info
ansible.builtin.shell: |
df -BG / 2>/dev/null | tail -1 | awk '{gsub("G",""); gsub("%",""); printf "{\"total_gb\":%s,\"used_gb\":%s,\"usage_percent\":%s}", $2, $3, $5}' || echo '{"total_gb":0,"used_gb":0,"usage_percent":0}'
register: disk_root
changed_when: false
- name: Build metrics output
ansible.builtin.set_fact:
metrics_output:
host: "{{ inventory_hostname }}"
data:
disk_info: "{{ disk_info.stdout | default('[]', true) | from_json }}"
disk_root_total_gb: "{{ (disk_root.stdout | default('{\"total_gb\":0,\"used_gb\":0,\"usage_percent\":0}', true) | from_json).total_gb | float }}"
disk_root_used_gb: "{{ (disk_root.stdout | default('{\"total_gb\":0,\"used_gb\":0,\"usage_percent\":0}', true) | from_json).used_gb | float }}"
disk_root_usage_percent: "{{ (disk_root.stdout | default('{\"total_gb\":0,\"used_gb\":0,\"usage_percent\":0}', true) | from_json).usage_percent | float }}"
- name: Output metrics
ansible.builtin.debug:
msg: "METRICS_JSON_START:{{ metrics_output | to_json }}:METRICS_JSON_END"