Facter 4.0.47

Released December 2020 and shipped with Puppet 7.1.0.

New features

  • Added scope6 fact for per binding. This release adds the scope6 fact under every ipv6 address from the interface.bindings6 fact. FACT-2843
  • Support for AWS IMDSv2. This release updates the EC2 fact to use IMDSv2 to authenticate. To use v2, set the AWS_IMDSv2 environment variable to true. Note that the token is cached for a maximum of 100 seconds.

Resolved issues

  • Facter 4 does not resolve hostname facts. Previously, Facter failed when Socket.getaddrinfo was called, which prevented retrieval of FQDN information. This is now fixed. FACT-2894
  • Gem-based Facter 4 does not log the facts in debug mode. This release adds log messages for resolved fact values. FACT-2883

  • Gem-based Facter 4 does not return the complete FQDN. Previously, domain was not retrieved correctly on Linux based systems and resulted in a faulty FQDN fact. This release uses Ruby Socket methods to retrieve domain correctly. FACT-2882

  • Puppet 7 treats non existent facts differently to Puppet 6. This release excludes custom facts with nil value from to_user_output, values and to_hash Ruby Facter API's. The custom facts with nil value are still returned by value, fact and [] API's. FACT-2881

  • Facts failing on machines with VLANs. With this release, dots in legacy fact names are ignored. They are not used as an indicator of a fact hierarchy because legacy facts cannot compose and have a flat (key - value) structure. FACT-2870

  • Facter 4 changes is_virtual fact from boolean to string. This release fixes a regression that caused the is_virtual to be a string instead of a boolean. FACT-2869

  • External facts are loaded when using puppet lookup for a different node. The load_external API method was missing in Facter 4. This is now fixed. FACT-2859

  • Facter fails when the interface name is not UTF-8. Previously, a pointer used to indicate networking information was being released by the GC too early and the memory was overridden, resulting in inconsistent data. The fix extends the scope of the pointer so that the memory it points to does not release prematurely. FACT-2856

  • Failure when a structured custom fact has the wrong layout. This release adds a log message when custom fact names are incompatible and a fact hierarchy cannot be created. FACT-2851

  • Cannot retrieve local facts error. This release fixes an error thrown on systems with a low file descriptor limit. FACT-2898
  • Dig method fails on Puppet$facts. The Facter 4 API method to_hash returned a different data type to Facter 3. This release ensures the to_hash method returns a Ruby Hash instance. FACT-2897
  • Facter fails when trying to retrieve ssh facts. Facter now skips reading ssh keys it does not recognise. FACT-2896
  • Missing primary interface check on all platforms. Similar to Facter 3, this release adds a final check that detects the primary interface from the IP. Localhost IPs are excluded. FACT-2892
  • Facter 4.0.46 breaks virtual flag.Facter now checks whether the /proc/lve/list file is a regular file, instead of checking if it is executable. FACT-2891
  • Facter 4.0.46 does not load external fact files in lexicographical order. This is now fixed. FACT-2874
  • Secondary interfaces are not reported.Networking.interfaces now display secondary interfaces (with or without the label) and the VLANs.MAC address is correctly displayed for bonded interfaces. If DHCP is not found, use the dhcpcd -U <interface_name> command to search. FACT-2872

Deprecations and removals

Update rake task for generating facts and tests. The scripts used to generate facts were outdated and had never been used. This release removes them. FACT-2298