Facter 4.0.52

Released March 2021 and shipped with Puppet7.5.0.

We would like to thank the following Puppet community members for their contributions to this release: smokris..

New features

  • Azure metadata fact. This release adds the az_metadata fact which provides information on Azure virtual machine instances. For more information, see the Microsoft Azure instance metadata documentation. FACT-1383

  • Azure identification fact. This release adds the cloud.provider fact for Azure identification on Linux and Windows platforms. FACT-1847

Enhancements

  • Dependency to lsb packages are missing The os.distro facts are now resolved without the lsb_release on the following platforms: RHEL, Amazon, SLES. The information is read from the system in the same way. Note that the os.distro.specification fact, which refers to lsb version, is available only if the lsb_release has been installed. FACT-2931

  • Linux networking resolver split into four classes. The Linux networking resolver was too large and has now been split into four classes. The classes are: toSocketParser (gets data from the Ruby Socket library), DHCP (gets all DHCP related data), RoutingTable (gets interface data from the ip route show command, if something can not be retrieved with SocketParser) and the Linux resolver (combines the data from the other classes). FACT-2915

Resolved issues

  • Permission denied error when reading Facter cache during PE 2021 upgrade. Facter 4 no longer loads facter.conf from the default location when running on jRuby. FACT-2959

  • Facter 4 reports lsbmajdistrelease on Ubuntu differently from Facter 3. Previously, the lsbmajdistrelease fact from Facter 4 was not showing the correct value on Ubuntu. This is now fixed and aligns the fact's output with Facter 3. FACT-2952

  • Root of structured core facts cannot be overridden by a custom fact. Previously, the root of structured core facts could not be overridden by a custom fact — because the top-level fact did not exist. This release updates the QueryParser logic to return the root fact — if present in the loaded facts list — and allows redefinition of core facts. FACT-2950

  • Facter tries to load an incompatible libsocket.so on SmartOS. Previously, Facter tried to load an incompatible (32-bit) libsocket.so from a hardcoded path using ffi and failed to retrieve networking facts. Now, the library name is preferred and networking facts can be retrieved on SmartOS. Contributed by Puppet community member smokris. FACT-2947

  • Puppet Server creates another certname during upgrade. Previously, when upgrading Puppet 6 to Puppet 7 on Linux, Facter failed to retrieve the domain using JRuby because the Socket.getaddrinfo calls failed. Now, if any of the Socket method calls fail, Facter can retrieve the information using FFI methods. FACT-2944

  • The puppet facts show command logs error when stdlib is installed. This release fixes an issue where Facter.value did not return the fact value for a legacy fact. This happened when calling a legacy fact from a custom fact or calling other Facter API methods before calling Facter.value. FACT-2937

  • Facter 4 pe-bolt-server raises access denied error if cache is enabled. When Facter is unable to delete the cache files, it now logs a warning message instead of returning error. FACT-2961

  • Facter 4 does not accept the same time units as Facter 3. This release makes the following ttls time units available in Facter 4: ns, nanos, nanoseconds, us, micros, microseconds, ms, milis, milliseconds, s, m, h, d. Note that singular time units are also accepted, for example, mili and nano.FACT-2962
  • TheFacter.conf file does not accept singular ttls units. Previously, Facter failed if the ttls unit in the facter.conf file was a plural ("days" and "hours"). Facter now accepts a singular noun ("day" and "hour").