50 lines
3.1 KiB
YAML
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
|