--- # Memory information gathering tasks - name: Gather memory information from Ansible facts set_fact: system_info_memory_total_mb: "{{ ansible_memtotal_mb }}" system_info_memory_free_mb: "{{ ansible_memfree_mb }}" system_info_swap_total_mb: "{{ ansible_swaptotal_mb }}" system_info_swap_free_mb: "{{ ansible_swapfree_mb }}" tags: [gather, memory] - name: Gather detailed memory information shell: free -h register: system_info_free_raw changed_when: false tags: [gather, memory] - name: Gather memory information from /proc/meminfo shell: cat /proc/meminfo | grep -iE "MemTotal|MemFree|MemAvailable|Buffers|Cached|SwapTotal|SwapFree|SwapCached" register: system_info_meminfo_raw changed_when: false tags: [gather, memory] - name: Parse detailed memory values set_fact: system_info_mem_available_kb: "{{ system_info_meminfo_raw.stdout | regex_search('MemAvailable:\\s+(\\d+)', '\\1') | default(['0'], true) | first }}" system_info_mem_buffers_kb: "{{ system_info_meminfo_raw.stdout | regex_search('Buffers:\\s+(\\d+)', '\\1') | default(['0'], true) | first }}" system_info_mem_cached_kb: "{{ system_info_meminfo_raw.stdout | regex_search('Cached:\\s+(\\d+)', '\\1') | default(['0'], true) | first }}" tags: [gather, memory] - name: Gather physical memory hardware information shell: dmidecode -t memory | grep -iE "Size|Type|Speed|Manufacturer|Serial Number|Locator" || echo "DMI memory info not available" register: system_info_dmi_memory_raw changed_when: false become: true failed_when: false tags: [gather, memory] - name: Count physical memory modules shell: dmidecode -t memory | grep -c "^[[:space:]]*Size.*MB" || echo "0" register: system_info_memory_modules_count_raw changed_when: false become: true failed_when: false tags: [gather, memory] - name: Gather swap devices information shell: swapon --show --noheadings || echo "No swap configured" register: system_info_swap_devices_raw changed_when: false tags: [gather, memory] - name: Calculate memory usage percentage set_fact: system_info_memory_used_mb: "{{ ansible_memtotal_mb - ansible_memfree_mb }}" system_info_memory_usage_percent: "{{ ((ansible_memtotal_mb - ansible_memfree_mb) / ansible_memtotal_mb * 100) | round(2) }}" tags: [gather, memory] - name: Calculate swap usage percentage set_fact: system_info_swap_used_mb: "{{ ansible_swaptotal_mb - ansible_swapfree_mb }}" system_info_swap_usage_percent: "{{ ((ansible_swaptotal_mb - ansible_swapfree_mb) / ansible_swaptotal_mb * 100) | round(2) if ansible_swaptotal_mb > 0 else 0 }}" tags: [gather, memory] - name: Check for memory pressure shell: | if [ -f /proc/pressure/memory ]; then cat /proc/pressure/memory else echo "Memory pressure statistics not available" fi register: system_info_memory_pressure_raw changed_when: false failed_when: false tags: [gather, memory] - name: Gather huge pages information shell: | grep -E "HugePages_|Hugepagesize" /proc/meminfo || echo "Huge pages not configured" register: system_info_hugepages_raw changed_when: false tags: [gather, memory] - name: Aggregate memory information set_fact: system_info_memory: total_mb: "{{ system_info_memory_total_mb }}" free_mb: "{{ system_info_memory_free_mb }}" used_mb: "{{ system_info_memory_used_mb }}" available_kb: "{{ system_info_mem_available_kb }}" buffers_kb: "{{ system_info_mem_buffers_kb }}" cached_kb: "{{ system_info_mem_cached_kb }}" usage_percent: "{{ system_info_memory_usage_percent }}" physical_modules: "{{ system_info_memory_modules_count_raw.stdout | default('0') }}" hardware_details: "{{ system_info_dmi_memory_raw.stdout_lines | default([]) }}" pressure: "{{ system_info_memory_pressure_raw.stdout_lines | default([]) }}" hugepages: "{{ system_info_hugepages_raw.stdout_lines | default([]) }}" free_output: "{{ system_info_free_raw.stdout_lines }}" tags: [gather, memory] - name: Aggregate swap information set_fact: system_info_swap: total_mb: "{{ system_info_swap_total_mb }}" free_mb: "{{ system_info_swap_free_mb }}" used_mb: "{{ system_info_swap_used_mb }}" usage_percent: "{{ system_info_swap_usage_percent }}" devices: "{{ system_info_swap_devices_raw.stdout_lines | default([]) }}" tags: [gather, memory]