165 lines
5.1 KiB
Markdown
165 lines
5.1 KiB
Markdown
# Ansible Collection - Jonny007MKD.interfaces
|
|
|
|
## Role gather_ip_interfaces
|
|
|
|
Ansible facts contain information about the IP configuration in a non-optimal way (IMO).
|
|
This role restructures the facts and sets new variables:
|
|
|
|
### interfaces
|
|
|
|
A list of dicts containing the configuration of each network interfaces.
|
|
The specific content comes from the ansible variables; this is only an aggregate of all interface dictionaries.
|
|
|
|
ok: [localhost] => {
|
|
"interfaces": [
|
|
{
|
|
"active": true,
|
|
"device": "lo",
|
|
"features": {
|
|
"esp_hw_offload": "off [fixed]",
|
|
"esp_tx_csum_hw_offload": "off [fixed]",
|
|
"fcoe_mtu": "off [fixed]",
|
|
"generic_receive_offload": "on",
|
|
"generic_segmentation_offload": "on",
|
|
...
|
|
},
|
|
"hw_timestamp_filters": [],
|
|
"ipv4": {
|
|
"address": "127.0.0.1",
|
|
"broadcast": "",
|
|
"netmask": "255.0.0.0",
|
|
"network": "127.0.0.0",
|
|
"prefix": "8"
|
|
},
|
|
"ipv6": [
|
|
{
|
|
"address": "::1",
|
|
"prefix": "128",
|
|
"scope": "host"
|
|
}
|
|
],
|
|
"mtu": 65536,
|
|
"promisc": false,
|
|
"timestamping": [],
|
|
"type": "loopback"
|
|
},
|
|
{
|
|
"active": true,
|
|
"device": "wlo1",
|
|
"features": {
|
|
"esp_hw_offload": "off [fixed]",
|
|
"esp_tx_csum_hw_offload": "off [fixed]",
|
|
"fcoe_mtu": "off [fixed]",
|
|
"generic_receive_offload": "on",
|
|
"generic_segmentation_offload": "off [requested on]",
|
|
...
|
|
},
|
|
"hw_timestamp_filters": [],
|
|
"ipv4": {
|
|
"address": "192.168.1.100",
|
|
"broadcast": "192.168.1.255",
|
|
"netmask": "255.255.255.0",
|
|
"network": "192.168.1.0",
|
|
"prefix": "9"
|
|
},
|
|
"ipv6": [
|
|
{
|
|
"address": "fddc:ffeb:2910::206",
|
|
"prefix": "128",
|
|
"scope": "global"
|
|
},
|
|
{
|
|
"address": "fddc:ffeb:2910:0:18c7:c3ff:efa6:35ae",
|
|
"prefix": "64",
|
|
"scope": "global"
|
|
}
|
|
],
|
|
"macaddress": "18:c7:c3:a6:35:ae",
|
|
"module": "rtw88_8821ce",
|
|
"mtu": 1500,
|
|
"pciid": "0000:01:00.0",
|
|
"promisc": false,
|
|
"timestamping": [],
|
|
"type": "ether"
|
|
}
|
|
]
|
|
}
|
|
|
|
|
|
## all_ipv4_addresses
|
|
|
|
A list of dicts with the information about this machine's IPv4 networks
|
|
|
|
ok: [localhost] => {
|
|
"all_ipv4_addresses": [
|
|
{
|
|
"interface": "lo",
|
|
"address": "127.0.0.1",
|
|
"address_prefix": "127.0.0.1/8",
|
|
"broadcast": "",
|
|
"netmask": "255.0.0.0",
|
|
"network": "127.0.0.0",
|
|
"network_prefix": "127.0.0.0/8",
|
|
"prefix": "8"
|
|
},
|
|
{
|
|
"interface": "wlo1",
|
|
"address": "192.168.1.100",
|
|
"address_prefix": "192.168.1.100/24",
|
|
"broadcast": "192.168.1.255",
|
|
"netmask": "255.255.255.0",
|
|
"network": "192.168.1.0",
|
|
"network_prefix": "192.168.1.0/24",
|
|
"prefix": "24"
|
|
}
|
|
]
|
|
}
|
|
|
|
|
|
|
|
### all_ipv6_addresses
|
|
|
|
A list of dicts with the information about this machine's IPv6 networks
|
|
|
|
ok: [localhost] => {
|
|
"all_ipv6_addresses": [
|
|
{
|
|
"address": "::1",
|
|
"address_prefix": "::1/128",
|
|
"interface": "lo",
|
|
"prefix": "128",
|
|
"scope": "host"
|
|
},
|
|
{
|
|
"address": "fddc:ffeb:2910::206",
|
|
"address_prefix": "fddc:ffeb:2910::206/128",
|
|
"interface": "wlo1",
|
|
"prefix": "128",
|
|
"scope": "global"
|
|
},
|
|
{
|
|
"address": "fddc:ffeb:2910:0:18c7:c3ff:efa6:35ae",
|
|
"address_prefix": "fddc:ffeb:2910:0:18c7:c3ff:efa6:35ae/64",
|
|
"interface": "wlo1",
|
|
"prefix": "64",
|
|
"scope": "global"
|
|
},
|
|
]
|
|
}
|
|
|
|
### Usage
|
|
|
|
Simply include the role in your playbook:
|
|
|
|
---
|
|
- name: My playbook
|
|
hosts: localhost
|
|
connection: local
|
|
roles:
|
|
- Jonny007MKD.interfaces.gather_ip_interfaces
|
|
|
|
Or include it in your role when you need it:
|
|
|
|
- name: Gather IP facts on servers
|
|
ansible.builtin.import_role:
|
|
name: Jonny007MKD.interfaces.gather_ip_interfaces
|