From 48f62ed2e1fedbbdc60b24e269d88a248daa6680 Mon Sep 17 00:00:00 2001 From: heimoshuiyu Date: Wed, 18 Sep 2024 09:27:52 +0800 Subject: [PATCH] add gather-info.yaml --- gather-info.yaml | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 gather-info.yaml diff --git a/gather-info.yaml b/gather-info.yaml new file mode 100644 index 0000000..f92a859 --- /dev/null +++ b/gather-info.yaml @@ -0,0 +1,49 @@ +- name: Gather and write system information to CSV on control node + hosts: all + gather_facts: no + user: root + become: yes + tasks: + - name: Gather system information + setup: + gather_subset: + - 'all' + register: system_info + + - name: Set extended system facts + set_fact: + system_summary: + hostname: "{{ system_info.ansible_facts.ansible_hostname }}" + ipv4_addresses: "{{ system_info.ansible_facts.ansible_all_ipv4_addresses | join(',') }}" + ipv6_addresses: "{{ system_info.ansible_facts.ansible_all_ipv6_addresses | join(',') }}" + cpu: "{{ system_info.ansible_facts.ansible_processor | join(',') }}" + total_memory_mb: "{{ system_info.ansible_facts.ansible_memtotal_mb }}" + os_distribution: "{{ system_info.ansible_facts.ansible_distribution }}" + os_version: "{{ system_info.ansible_facts.ansible_distribution_version }}" + os_family: "{{ system_info.ansible_facts.ansible_os_family }}" + architecture: "{{ system_info.ansible_facts.ansible_architecture }}" + kernel: "{{ system_info.ansible_facts.ansible_kernel }}" + uptime_seconds: "{{ system_info.ansible_facts.ansible_uptime_seconds }}" + default_ipv4: "{{ system_info.ansible_facts.ansible_default_ipv4.address }}" + default_ipv6: "{{ system_info.ansible_facts.ansible_default_ipv6.address if system_info.ansible_facts.ansible_default_ipv6 is defined else '' }}" + mounts: "{{ system_info.ansible_facts.ansible_mounts | map(attribute='mount') | join(',') }}" + interfaces: "{{ system_info.ansible_facts.ansible_interfaces | join(',') }}" + gateway_ipv4: "{{ system_info.ansible_facts.ansible_default_ipv4.gateway }}" + gateway_ipv6: "{{ system_info.ansible_facts.ansible_default_ipv6.gateway if system_info.ansible_facts.ansible_default_ipv6 is defined else '' }}" + + - name: Ensure CSV file exists and write header on control node + local_action: + module: lineinfile + path: ./system_info.csv + line: '"hostname","ipv4_addresses","ipv6_addresses","cpu","total_memory_mb","os_distribution","os_version","os_family","architecture","kernel","uptime_seconds","default_ipv4","default_ipv6","mounts","interfaces","gateway_ipv4","gateway_ipv6"' + create: yes + state: present + run_once: true # Only run once to write the header + + - name: Append system information to CSV on control node + local_action: + module: lineinfile + path: ./system_info.csv + line: '"{{ system_summary.hostname }}","{{ system_summary.ipv4_addresses }}","{{ system_summary.ipv6_addresses }}","{{ system_summary.cpu }}","{{ system_summary.total_memory_mb }}","{{ system_summary.os_distribution }}","{{ system_summary.os_version }}","{{ system_summary.os_family }}","{{ system_summary.architecture }}","{{ system_summary.kernel }}","{{ system_summary.uptime_seconds }}","{{ system_summary.default_ipv4 }}","{{ system_summary.default_ipv6 }}","{{ system_summary.mounts }}","{{ system_summary.interfaces }}","{{ system_summary.gateway_ipv4 }}","{{ system_summary.gateway_ipv6 }}"' + create: yes + insertafter: EOF