Bug #31943
closedFacter 4.x does not report uninitialized interfaces
Description
The newest FDI image version 3.7.3 is somehow acting differently collecting networking facts:
[root@fdi ~]# FACTERLIB=/usr/share/fdi/facts tfm-ruby /opt/theforeman/tfm/root/usr/bin/facter networking { dhcp => "10.2.0.104", fqdn => "fdi.", hostname => "fdi", interfaces => { eno1 => { bindings => [ { address => "10.2.240.156", netmask => "255.255.0.0", network => "10.2.0.0" } ], bindings6 => [ { address => "fe80::4adf:37ff:fe7f:3fb8", netmask => "ffff:ffff:ffff:ffff::", network => "fe80::" } ], dhcp => "10.2.0.104", ip => "10.2.240.156", ip6 => "fe80::4adf:37ff:fe7f:3fb8", mac => "48:df:XX:XX:XX:XX", mtu => 1500, netmask => "255.255.0.0", netmask6 => "ffff:ffff:ffff:ffff::", network => "10.2.0.0", network6 => "fe80::", scope6 => "link" }, lo => { bindings => [ { address => "127.0.0.1", netmask => "255.0.0.0", network => "127.0.0.0" } ], bindings6 => [ { address => "::1", netmask => "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", network => "::1" } ], ip => "127.0.0.1", ip6 => "::1", mtu => 65536, netmask => "255.0.0.0", netmask6 => "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", network => "127.0.0.0", network6 => "::1", scope6 => "host" } }, ip => "10.2.240.156", ip6 => "fe80::4adf:37ff:fe7f:3fb8", mac => "48:df:XX:XX:XX:XX", mtu => 1500, netmask => "255.255.0.0", netmask6 => "ffff:ffff:ffff:ffff::", network => "10.2.0.0", network6 => "fe80::", primary => "eno1", scope6 => "link" }
on this machine i have 2 x 10 Gbit/s interfaces that i can also see in the fdi:
[root@fdi ~]# ifconfig eno1: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500 inet 10.2.240.156 netmask 255.255.0.0 broadcast 10.2.255.255 inet6 fe80::4adf:37ff:fe7f:3fb8 prefixlen 64 scopeid 0x20<link> ether 48:df:37:7f:3f:b8 txqueuelen 1000 (Ethernet) RX packets 30836 bytes 16855273 (16.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 30235 bytes 1438550 (1.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno2: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500 ether 48:df:37:7f:3f:b9 txqueuelen 1000 (Ethernet) RX packets 12 bytes 2580 (2.5 KiB) RX errors 0 dropped 2 overruns 0 frame 0 TX packets 19 bytes 1387 (1.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=329<UP,LOOPBACK,RUNNING,PROMISC> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
The only difference between eno1 and eno2 seems to be that eno2 does not have any ip configuration. This should be working as 1 interfaces for provisioning in Foreman is enough. Due to the missing interface fact i am not able to deploy bonding devices.
Updated by Lukas Zapletal over 3 years ago
- Subject changed from missing interface fact in FDI 3.7.3 to Facter 4.x does not report uninitialized interfaces
- Priority changed from High to Normal
- Triaged changed from No to Yes
Hello,
hmmm that's not good, we have upgraded to Facter 4 (from Facter 2.x) and this was not noticed. It looks like Facter 4 ignores interfaces which don't have IP address, it only parsers output from "ip -o address" and takes that as the input for list of interfaces. That's incorrect, it's a bug in Facter 4.0. We use 4.0.44 at the moment.
Lucky day for us tho, it looks like linux networking resolver was completely rewritten from scratch and it now uses proper linux interface to list available interfaces: https://github.com/puppetlabs/facter/pull/2219/files#diff-cfcddcca8f25c11150c733834776f2fa3bb3cca58844973fff403e17f8046100L36-R81 and this has been merged for 4.0.47. I think this should help in this case.
All we need to do to fix this is to update to 4.0.47 or newer.
Updated by Lukas Zapletal over 3 years ago
Step one: Update facter in our repos: https://github.com/theforeman/foreman-packaging/pull/6348
Step to: I will get you a nightly FDI build with the new facter
Step three: You report back and I can backport this into the release.
Updated by Lukas Zapletal over 3 years ago
- Related to Bug #31826: Discovered nodes without default route cannot be processed added
Updated by Dominic Schlegel over 3 years ago
Hi Lukas
Thanks for your awesome work.
Just ping me the download URL for the nightly FDI build here and i will test it and report back.
Thanks & Regards
Updated by Lukas Zapletal over 3 years ago
Was busy but I am back, in case I forget follow this PR: https://github.com/theforeman/foreman-packaging/pull/6348
Then watch http://downloads.theforeman.org/discovery/nightly/ for a new release :-)
Soon. Get back to me with the results.
Updated by Dominic Schlegel over 3 years ago
- Status changed from New to Resolved
The new FDI 3.7.5 is now showing interface facts for interfaces without ip address loaded:
[root@fdi ~]# FACTERLIB=/usr/share/fdi/facts tfm-ruby /opt/theforeman/tfm/root/usr/bin/facter networking { dhcp => "10.2.0.104", fqdn => "fdi", hostname => "fdi", interfaces => { eno49 => { bindings => [ { address => "10.2.240.178", netmask => "255.255.0.0", network => "10.2.0.0" } ], bindings6 => [ { address => "fe80::4adf:37ff:fe44:81f4", netmask => "ffff:ffff:ffff:ffff::", network => "fe80::", scope6 => "link" } ], dhcp => "10.2.0.104", ip => "10.2.240.178", ip6 => "fe80::4adf:37ff:fe44:81f4", mac => "48:df:37:44:81:f4", mtu => 1500, netmask => "255.255.0.0", netmask6 => "ffff:ffff:ffff:ffff::", network => "10.2.0.0", network6 => "fe80::", scope6 => "link" }, eno50 => { mac => "48:df:37:44:81:f5", mtu => 1500 }, lo => { bindings => [ { address => "127.0.0.1", netmask => "255.0.0.0", network => "127.0.0.0" } ], bindings6 => [ { address => "::1", netmask => "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", network => "::1", scope6 => "host" } ], ip => "127.0.0.1", ip6 => "::1", mtu => 65536, netmask => "255.0.0.0", netmask6 => "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", network => "127.0.0.0", network6 => "::1", scope6 => "host" } }, ip => "10.2.240.178", ip6 => "fe80::4adf:37ff:fe44:81f4", mac => "48:df:37:44:81:f4", mtu => 1500, netmask => "255.255.0.0", netmask6 => "ffff:ffff:ffff:ffff::", network => "10.2.0.0", network6 => "fe80::", primary => "eno49", scope6 => "link" }
Updated by Dominic Schlegel over 3 years ago
- Pull request https://github.com/theforeman/foreman-packaging/pull/6348 added
Updated by Lukas Zapletal over 3 years ago
- Related to Refactor #24153: Refactor fdi to work with facter 4.x added