--- # Network information gathering tasks - name: Gather network interfaces information set_fact: system_info_interfaces: "{{ ansible_interfaces }}" tags: [gather, network] - name: Gather IP addresses shell: ip -br addr show | grep -v "^lo" register: system_info_ip_addr_raw changed_when: false failed_when: false tags: [gather, network] - name: Gather detailed network configuration shell: ip addr show register: system_info_ip_full_raw changed_when: false tags: [gather, network] - name: Gather routing table shell: ip route show register: system_info_routes_raw changed_when: false tags: [gather, network] - name: Gather DNS configuration shell: | if [ -f /etc/resolv.conf ]; then grep "^nameserver" /etc/resolv.conf else echo "No resolv.conf found" fi register: system_info_dns_raw changed_when: false tags: [gather, network] - name: Gather network interface statistics shell: ip -s link show register: system_info_net_stats_raw changed_when: false tags: [gather, network] - name: Check for active connections shell: ss -tunapl | head -20 register: system_info_connections_raw changed_when: false become: true failed_when: false tags: [gather, network] - name: Gather listening ports shell: ss -tlnp register: system_info_listening_raw changed_when: false become: true failed_when: false tags: [gather, network] - name: Build network interface details set_fact: system_info_network_interfaces: {} tags: [gather, network] - name: Gather details for each interface set_fact: system_info_network_interfaces: "{{ system_info_network_interfaces | combine({item: { 'ipv4': ansible_facts[item]['ipv4'] | default({}), 'ipv6': ansible_facts[item]['ipv6'] | default([]), 'mac': ansible_facts[item]['macaddress'] | default('N/A'), 'mtu': ansible_facts[item]['mtu'] | default('N/A'), 'state': ansible_facts[item]['active'] | default(false) | string, 'type': ansible_facts[item]['type'] | default('unknown') }}) }}" loop: "{{ ansible_interfaces }}" when: item != 'lo' tags: [gather, network] - name: Aggregate network information set_fact: system_info_network: interfaces: "{{ system_info_network_interfaces }}" ip_addresses: "{{ system_info_ip_addr_raw.stdout_lines | default([]) }}" routes: "{{ system_info_routes_raw.stdout_lines }}" dns_servers: "{{ system_info_dns_raw.stdout_lines | default([]) }}" listening_ports: "{{ system_info_listening_raw.stdout_lines | default([]) }}" default_ipv4: "{{ ansible_default_ipv4 | default({}) }}" default_ipv6: "{{ ansible_default_ipv6 | default({}) }}" tags: [gather, network]