40 lines
1.9 KiB
YAML
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"
|