Files
ansible/gather-info.yaml
2024-09-18 09:27:52 +08:00

50 lines
3.1 KiB
YAML

- 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