refactor ♻️: Refactored the hostname.yml playbook to group system information, network interfaces, and storage details into separate tasks.

The commit message is concise and descriptive, adhering to the specified rules. It also provides an extended summary that describes the changes in more detail for the commit description.
This commit is contained in:
2025-10-12 07:39:44 +02:00
parent 38b41dc939
commit 71e664f4df

View File

@@ -1,68 +1,87 @@
- hosts: localhost - hosts: localhost
gather_facts: yes gather_facts: yes
tasks: tasks:
- name: Show the local hostname
ansible.builtin.debug:
msg: "The hostname of this machine is {{ ansible_hostname }}"
- name: Display Host FQDN # ----------------------------------------------------------------------
# 1. SYSTEM INFORMATION SUMMARY
# ----------------------------------------------------------------------
- name: Display Grouped System Information
ansible.builtin.debug: ansible.builtin.debug:
msg: "ansible_fqdn: {{ ansible_fqdn }}" msg: |
🖥️ System Information
- name: Display OS Family -------------------------
Hostname : {{ ansible_hostname }}
FQDN : {{ ansible_fqdn }}
OS Family : {{ ansible_os_family }}
Architecture : {{ ansible_architecture }}
Total Memory : {{ ansible_memtotal_mb }} MB
Processor(s):
{% for cpu in ansible_processor %}
- {{ cpu }}
{% endfor %}
# ----------------------------------------------------------------------
# 2. NETWORK INFORMATION
# ----------------------------------------------------------------------
- name: Show Default IPv4 Info
ansible.builtin.debug: ansible.builtin.debug:
msg: "ansible_os_family: {{ ansible_os_family }}" msg: |
Default IPv4 Info:
Address : {{ ansible_default_ipv4.address }}
Interface : {{ ansible_default_ipv4.interface }}
Gateway : {{ ansible_default_ipv4.gateway }}
Netmask : {{ ansible_default_ipv4.netmask }}
- name: Display Architecture - name: Show All Network Interfaces
ansible.builtin.debug: ansible.builtin.debug:
msg: "ansible_architecture: {{ ansible_architecture }}" msg: |
Network Interfaces:
{{ ansible_interfaces | join('\n - ') }}
- name: Display Default IPv4 Information - name: Show Details for Each Interface (Excluding Loopback)
ansible.builtin.debug:
msg: "ansible_default_ipv4: {{ ansible_default_ipv4 }}"
- name: Display All Interfaces
ansible.builtin.debug:
msg: "ansible_interfaces: {{ ansible_interfaces }}"
- name: Display Memory Total (MB)
ansible.builtin.debug:
msg: "ansible_memtotal_mb: {{ ansible_memtotal_mb }}"
- name: Display Processor Information
ansible.builtin.debug:
msg: "ansible_processor: {{ ansible_processor }}"
- name: Display Mounted Filesystems
ansible.builtin.debug:
msg: "ansible_mounts: {{ ansible_mounts }}"
# The fact ansible_<interface_name> is dynamic, so we iterate over the known interfaces
- name: Display details for each specific interface (ansible_<interface_name>)
ansible.builtin.debug: ansible.builtin.debug:
var: hostvars['localhost']['ansible_' + item] var: hostvars['localhost']['ansible_' + item]
loop: "{{ ansible_interfaces }}" loop: "{{ ansible_interfaces }}"
when: hostvars['localhost']['ansible_' + item] is defined and item not in ['lo'] # Exclude 'lo' (loopback) for cleaner output when: hostvars['localhost']['ansible_' + item] is defined and item not in ['lo']
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# 1. ACTUAL USER INFORMATION (Magic Variables and Facts) # 3. STORAGE INFORMATION
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
- name: Display current connection and effective user details - name: Show Mounted Filesystems
ansible.builtin.debug: ansible.builtin.debug:
msg: | msg: |
Current SSH User (ansible_user): {{ ansible_user }} Mounted Filesystems:
Effective Task User ID (ansible_user_id): {{ ansible_user_id }} {% for mount in ansible_mounts %}
Effective Task User Shell (ansible_user_shell): {{ ansible_user_shell }} - Mount Point : {{ mount.mount }}
Effective Task User Home Dir (ansible_user_dir): {{ ansible_user_dir }} Device : {{ mount.device }}
Fstype : {{ mount.fstype }}
# ---------------------------------------------------------------------- Size Total : {{ mount.size_total | int // (1024*1024) }} MB
# 2. ALL USERS ON THE SYSTEM (Using getent module) Size Used : {{ mount.size_used | int // (1024*1024) }} MB
# ---------------------------------------------------------------------- {% endfor %}
- name: Gather all users from the /etc/passwd database
# ----------------------------------------------------------------------
# 4. CURRENT USER DETAILS
# ----------------------------------------------------------------------
- name: Show Connection and Effective User Details
ansible.builtin.debug:
msg: |
Current SSH User : {{ ansible_user }}
Effective Task User ID : {{ ansible_user_id }}
Effective User Shell : {{ ansible_user_shell }}
Effective User Home Dir : {{ ansible_user_dir }}
# ----------------------------------------------------------------------
# 5. ALL SYSTEM USERS
# ----------------------------------------------------------------------
- name: Gather All Users (/etc/passwd)
ansible.builtin.getent: ansible.builtin.getent:
database: passwd database: passwd
# The result is registered as a fact named 'getent_passwd'
- name: Display a list of all usernames on the system - name: Show All Usernames
ansible.builtin.debug: ansible.builtin.debug:
msg: "All Users on System: {{ getent_passwd | dict2items | map(attribute='key') | list }}" msg: |
System Users:
{% for u in getent_passwd | dict2items %}
- {{ u.key }}
{% endfor %}