--- # Builtin Playbook: Collecte des informations CPU - name: Collect CPU Information hosts: all become: false gather_facts: true vars: _builtin_playbook: true _builtin_id: collect_cpu_info _collect_metrics: true tasks: - name: Get CPU load averages ansible.builtin.shell: cat /proc/loadavg | awk '{print $1, $2, $3}' register: cpu_load changed_when: false - name: Get CPU temperature ansible.builtin.shell: | if [ -f /sys/class/thermal/thermal_zone0/temp ]; then cat /sys/class/thermal/thermal_zone0/temp | awk '{printf "%.1f", $1/1000}' else echo "null" fi register: cpu_temp changed_when: false ignore_errors: true - name: Get CPU usage percentage ansible.builtin.shell: | top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}' 2>/dev/null || echo "0" register: cpu_usage changed_when: false ignore_errors: true - name: Build metrics output ansible.builtin.set_fact: metrics_output: host: "{{ inventory_hostname }}" data: cpu_count: "{{ ansible_processor_vcpus | default(ansible_processor_count, true) | default(1) }}" cpu_model: "{{ ansible_processor[2] | default('Unknown', true) if (ansible_processor is defined and ansible_processor | length > 2) else 'Unknown' }}" cpu_load_1m: "{{ cpu_load.stdout.split()[0] | default('0', true) | float }}" cpu_load_5m: "{{ cpu_load.stdout.split()[1] | default('0', true) | float }}" cpu_load_15m: "{{ cpu_load.stdout.split()[2] | default('0', true) | float }}" cpu_usage_percent: "{{ cpu_usage.stdout | default('0', true) | float }}" cpu_temperature: "{{ cpu_temp.stdout if (cpu_temp.stdout is defined and cpu_temp.stdout != 'null') else '' }}" - name: Output metrics ansible.builtin.debug: msg: "METRICS_JSON_START:{{ metrics_output | to_json }}:METRICS_JSON_END"