--- # 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"