Facter release notes
These are the new features, resolved issues, and deprecations in this version of Facter.
Released April 2023 and shipped with Puppet 7.24.0.
No release notes.
Released February 2023 and shipped with Puppet 7.23.0.
We would like to thank the following Puppet community members for their contributions to this release: smortex.
facter.resolvereturns a subclass of Hash, not Hash. The
facter.resolveAPI in Facter 4 now returns a Hash instead of a subclass of Hash, as it did in Facter 3. FACT-3179
- Facter resolves facts multiple times when providers are confined based on facts, especially on Windows. Facter 4 previously did not use any cache information when looking up a fact or value Facter method. This now uses cache information when using the fact or value methods. FACT-3170
- Facter incorrectly filters IPv6 link-local unicast addresses. Facter now excludes IPv6 link-local unicast addresses (fe80::/10) correctly. Fix contributed by smortex. FACT-3171
Deprecations and removals
- Drop Ruby 2.3-2.4 support. Dropped support for Ruby 2.3 and 2.4, which went end-of-life in 2019 and 2020 respectively. FACT-3147
Released October 2022 and shipped with Puppet 7.20.0.
Networking facts generating conversion error:
ERROR Facter::InternalFactManager - U+FFFF to CP850in conversion from UTF-16LE to UTF-8 to CP850. Fixed a bug that prevented Facter from resolving its domain fact on Windows due to invalid strings in unrelated registry values. FACT-3145
ec2_metadatais missing on FreeBSD. Restored
ec2_metadatafact to Facter 4 on FreeBSD. Contirbuted by Puppet community member raybellis. FACT-3137
ipaddress6_*facts missing on FreeBSD. Restored the
ipaddresslegacy facts on FreeBSD. Contributed by Puppet community member smortex. FACT-3130
custom-diris silently skipped if it is not absolute path. Fixed a regression in Facter 4 that prevented the user from specifying a custom directory using a relative path on the command line. Contributed by Puppet community member smortex. FACT-3078
Released September 2022 and shipped with Puppet 7.19.0.
- Support for ERB changes introduced in Ruby 3.1. Facter now supports ERB changes introduced in Ruby 3.1. FACT-3102
- YAML anchors no longer function properly in Facter 4. Enabled YAML anchors in Facter 4, a feature that was available previously in Facter 3. Additionally, testing was added to ensure Facter continues to behave as expected when handling YAML anchors. FACT-3135
Facter 4 Does Not Support Built-In
Facter 3.x special-cased
echofor Windows to allow it to run using the built-in for a Windows shell; Facter 4 upgrade neglected to include this special case. This fix adds that special case back in. FACT-3133
Released August 2022 and shipped with Puppet 7.18.0.
cloud.providerfact to Google Compute Engine The
cloud.providerfact now returns
gcewhen running on Google Compute Engine. Contributed by Puppet community member natemccurdy. FACT-1557
- Facter does not parse UTF-8 encoded facts Fixed an issue where, in the C locale, Facter failed to parse YAML-based external facts when the contents were UTF-8 encoded. FACT-3113
Failed to get networking information: "\xE5" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to UTF-16LEFixed an issue where Facter failed to collect networking information on some Windows hosts due to encoding issues. FACT-3109
Released May 2022 and shipped with Puppet 7.17.0.
We would like to thank the following Puppet community members for their contributions to this release: kajinamit, nbarrientos.
- Facter fails when using cached facts in a read-only filesystem. Facter no longer errors when using cached facts from a read-only filesystem. FACT-3116
virtual=redhat. Resolved issue parsing output from virt-what on a KVM system. FACT-3115
Windows 11 shows up as Windows 10 21H2. Corrected
os.releasefacts for Windows 11. FACT-3090
This version was never released.
Released March 2022 and shipped with Puppet 7.15.0.
fact diskscannot get serial of disks. Updated Facter to use the full path for lsblk, so
fact diskscan now show serial of disks. FACT-3100
Released January 2022 and shipped with Puppet 7.14.0.
No release notes.
Released December 2021 and shipped with Puppet 7.12.0.
We would like to thank the following Puppet community members for their contributions to this release: johanfleury and smortex.
- Add serial number and WWID to disk fact. Added disks serial number and WWID to the disks fact. FACT-3083
DEBUG Facter::Resolvers::Aix::Mountpoints - Could not resolve mountpointswhen running
facter mountpoints --debugon AIX. Fixes Facter AIX mountpoint resolver to add correct data to the mountpoint fact when using NFS mountpoints. FACT-3094
os.namevalue changed for OS VirtuozzoLinux. Restored Facter3's value of
os.namefor VirtuozzoLinux. FACT-3087
Facter fails if there are invalid
characters in dmidecode. Replaced invalid UTF characters in
Caching not working for some custom facts. When using
Facter.value(:fact_name)inside a custom fact, caching did not work properly, as it cached the value from the inner fact instead of the actual fact. Now it correctly caches the required fact, by skipping writing the
cachefilewhen it is not required. FACT-3079
Inconsistent values coming from
facter-ngoutput. Fixed Facter 4 output for yaml external facts when the fact value is false. FACT-3077
--log-level nonethrows exception. Before this release, Facter 4 did not accept
noneas a log level even though it was supported as per
--helpoutput. This fix aligns the behaviour with Facter 3 by accepting
noneas a log level. FACT-3074
Facter timezone utf8 problem. This
release adds a new
timezoneresolver specific to Windows which checks the system codepage and uses it for encoding the timezone fact to avoid unwanted characters on non-English OS. FACT-3068
Released October 2021 and shipped with Puppet 7.12.0.
We would like to thank the following Puppet community members for their contributions to this release: johanfleury and smortex.
DisplayVersionfact for Windows. This release adds a new fact called
os.windows.display_version. This fact reads the version from the
DisplayVersionregistry key. FACT-3058
Option to show HTTP debug logs. This release adds the
--http_debugoption to the Facter CLI. This option displays the HTTP debug logs. FACT-3047
- Mismatched processor frequencies found on AIX. Previously, Facter added all the processors found in the ODM query, without checking their status. Now if the status is not available, Facter skips the processor. FACT-2955
- Facter API does not resolve custom facts that match legacy facts. Previously, custom facts with names that partially matched core legacy facts were resolved as expected in the Facter CLI, but not when using the API. In these cases, the Facter::FactManager did not resolve custom facts if core or external facts had results. This release adds a new method to check if the user query matches the name of resolved facts, and then decides whether to resolve the custom facts. FACT-3067
Inconsistencies with the
Facter::Core::Execution.executetimeout. This release fixes inconsistencies with the
Facter::Core::Execution.executearguments between Facter 3 and Facter 4. The
.executemethod now accepts a
timeoutoption, and warns when unsupported options are passed in. Contributed by Puppet community members johanfleury and smortex. FACT-3073
Windows 2022 detected as Windows 2019. The
os.release.majorfacts now correctly detect Windows 2022 and output
2022, instead of
Released September 2021 and shipped with Puppet 7.11.0.
- AIX reporting "could not resolve mountpoints" error. This release fixes a faulty regex on AIX that skipped lines with a node substring and resulted in the "could not resolve mountpoints" error. FACT-3060
- AIX reporting "odd number of arguments for hash". This release fixes a faulty regex on AIX that reported the “odd number of arguments” error when resolving mountpoint facts. FACT-3059
- Facter Ruby API binding fails to resolve facts from environment variables. This release fixes an issue where environment facts were not downcased before being added to the fact collection. Note that names are always downcased internally and are case-insensitive. FACT-3057
Facter unable to get processor speed on macOS 11 arm64. This release fixes an issue with
sysctlthat resulted in Facter reporting invalid values for the processors fact. FACT-3063
Released August 2021 and shipped with Puppet 7.10.0.
Reduced logs emitted. This release reduces the number of redundant logs emitted by Facter. FACT-3001
pacmanpackage provider fails in Facter >= 4.1.1. This release fixes the
operatingsystemfact on Archlinux and Manjarolinux. FACT-3043
Released July 2021 and shipped with Puppet 7.24.0.
Incorrect license for
lib/facter/custom_facts/core/legacy_facter.rb?. The top level LICENSE file has been changed from MIT to Apache 2.0. FACT-3053
Released June 2021 and shipped with Puppet 7.8.0.
Add flags to the help menu. This release adds the following short flags
to the help menu:
-h [--help]. FACT-3044
IMDSv2. This release improves the way Facter retrieves
IMDSv1. In this release, Facter automatically uses
IMDSv2to retrieve an AWS token to add to the
Facter 4 CLI did not accept concatenated
Facter 3 allowed short flags to be combined,
-jd. In Facter 4, you must declare short flags separately, such as
-j -d. FACT-3046
Ec2 resolver failed because of nil tokens.
Facter returned failing Rspec tests if a
token was nil before sending an HTTP request. The HTTP request gathers any
required data to resolve the
Ec2fact. To solve this issue, Facter now no longer sends HTTP requests if a token is nil.FACT-3050
Incorrect use of
ffi_libon Windows. This release fixes how
ntdll.dllwas loaded on Windows. FACT-3048
Released June 2021 and shipped with Puppet 7.7.0.
We would like to thank the following Puppet community members for their contributions to this release: ccaviness, b4ldr, ekohl, and lollipopman.
os.macosx.version.minorfact has been split into an additional
os.macosx.version.patchfact (on macOS 11+). Contributed by Puppet community member ccaviness. FACT-3031
flagskey. This release adds a
flagskey to the
networking.interfaces.*.bindings6fact, which parses the lower 8-bit encoded flags from
/proc/net/if_inet6. Note that the higher bit flags (
stableprivacy) are not shown in the fact output. Contributed by Puppet community member b4ldr. FACT-2907
- Ruby 3 added to the test matrix. This release adds support for Ruby 3 and updates the test matrix. Contributed by Puppet community member ekohl. FACT-3029
- Facter gem on Ruby 3. You can now install the Facter gem on Ruby 3. FACT-3027
- Improved fact matching and filtering. This release improves the mechanism of fact filtering and matching by unifying the functionality. FACT-3006
rubysitedirvalue when Ruby is compiled without
sitedir. This release fixes an issue where Facter reported an invalid value for the
ruby.sitedirfact — if Ruby was compiled without the
nil:NilClass. This release fixes a bug where multi-line commands executed through the
Facter::Util::ResolutionAPI were not expanded correctly. FACT-3040
which blkidfor each partition. This release fixes an issue where Facter executed
which blkidfor each partition. Now these commands are executed once per Facter run, improving performance and log readability. FACT-3035
TypeErroron non-existent indexes. Previously, when accessing array values by indexes, Facter raised a
TypeErrorif a non-existent index was searched. This is now fixed and Facter no longer errors. FACT-3030
Facter 4 calls
xen-toolstackscript when resolving the
xenfact. Previously, Facter called the
xen-toolstackscript when resolving the
xenfact. This script is deprecated, and now Facter only calls it if multiple xen stacks are installed. Contributed by Puppet community member lollipopman. FACT-3023
- Mountpoint file error. Previously, when a mountpoint file could not be read, or was missing, Facter threw an error, without specifying which mountpoint file had failed. The error is now silent, allowing Facter to continue resolving facts. You can still see the error when running Facter with debug logging enabled. FACT-2928
Released April 2021 and shipped with Puppet 7.6.1.
We would like to thank the following Puppet community members for their contributions to this release: ananace.
threadsdetails. This release adds the
cores per socketand
threads per coreinformation to the
Facter 4 user query overwritten when Facter is called outside of
setcodein a custom fact file. This release fixes an issue where custom facts failed to resolve because nested Facter calls overwrote user queries. FACT-3025
Facter.factreturns an object when the queried fact does not exist. When resolving facts that do not exist, Facter now returns nil, instead of an object of the
ResolvedFacttype with the value nil. FACT-3024
InfiniBand MAC addresses not resolved. Facter can now handle InfiniBand when reporting MAC addresses. Contributed by Puppet community member ananace. FACT-3021
Released April 2021.
Auto promoting dotted facts to structured facts is incompatible. This release reverts the way Facter 4 treats dots in fact names to the same behaviour as Facter 3. This means that by default, any dot in a custom or external fact name is considered part of the fact name and not a delimiter for structured facts. This fix also adds the
force-dot-resolutionglobal setting — which you can set to re-enable the Facter 4 behavior, converting dotted facts to structured facts. FACT-3004
Facter cannot autoload the provider from
puppetserverREPL shell. Previously, Facter failed to execute the first external command when running under JRuby. This issue only appeared when running
puppetserverfrom source — packaged versions were not affected. This is now fixed. FACT-2999
Facter breaks when querying custom facts. Previously, Facter showed misleading values or errors when querying for non-existent facts via CLI and
Facter.value. This is now fixed. FACT-2998
Domain facts cannot be resolved on travis without the FFI gem. This release fixes an issue that prevented FQDN facts resolving in situations where FFI was not installed. FACT-2997
Performance regression networking facts in Facter 4.x. This release fixes an issue with primary interface detection where the default route discarded packages. FACT-2996
selinuxfact is not properly detected by Facter 4. Facter 4 now takes the same approach as Facter 3 — checking for both the mounted
selinuxfilesystem and the configuration file. If either are absent, Facter does not fill in the
Facter 4.0.52 does not return the
fqdnfact. The Linux networking resolver now loads FFI if previous tries of getting the host information have failed. FACT-2989
Facter takes 20+ seconds on Windows due to Azure metadata query. Previously, the cloud fact could take over 20 seconds to resolve on Windows because Ruby was not respecting the HTTP connection timeout. Now the fact is only resolved on HyperV machines and a new implementation in the Facter HTTP client avoids long timeouts. FACT-2988
Facter 4 outputs
hypervisorfacts differently on Amazon 7. This release changes the value of
hypervisorfacts from a boolean to a string, matching the behavior of Facter 3. FACT-3007
Facter 4 outputs
hypervisors.zone.idfacts differently on Solaris. This release changes the value of the
hypervisors.zone.idfact from a String to an Integer, matching the behavior of Facter 3. FACT-2987
Facter 4 outputs
mountpointsfacts differently on macOS. This release fixes differences in the
mountpoints.optionsfacts on macOS, matching the behavior of Facter 3. FACT-2984
Facter 4 outputs
mountpointsfacts differently on Solaris. This release fixes differences in the
mountpointsfact on Solaris, matching the behavior of Facter 3. FACT-2982
Facter 4 outputs ldom facts differently on Solaris SPARC. Facter 4 reported boolean values as strings for Solaris LDOM facts. This is now fixed and the values are represented as boolean. FACT-2983
Facter 4 outputs uptime facts differently on Windows. This release fixes differences in the
uptimefact on Windows, matching the behavior of Facter 3. FACT-2966
Facter 4 outputs the
processors.speedfact differently on AIX. This release fixes differences in the
processors.speedfact on AIX, matching the behavior of Facter 3. FACT-2965
Facter 4 outputs MB facts differently to Facter 3. Facter no longer rounds values for MB facts, for example
Facter 4 outputs virtual facts differently on Amazon 6. The virtual fact is now detected as
xenhvmon Amazon Linux 6. FACT-2986
Facter 4 outputs the
hypervisorsfact differently on Amazon 7. This release fixes differences in the
hypervisorsfact on Amazon 7, matching the behavior of Facter 3. FACT-3007
Loopback IPv6 IP is not returned correctly. This release fixes the IPv6 address fact on Solaris. FACT-2981
Facter ensures core facts are resolved before loading custom facts. This release updates the
Facter.valueAPI to resolve facts in a similar way to Facter 3 — loading the
fact_name.rbfrom the configured custom directory, and then loading all core facts, external facts, environmental facts, and custom facts. FACT-2956
VLAN interfaces are not properly discovered. VLAN interfaces with a dot in the name were not correctly displayed in the networking fact. This is now fixed and the default networking resolver recognizes interfaces with a dot in the name. FACT-2946
Inconsistent handling of date types in custom facts. This release adds
Timeas supported values for custom facts. FACT-2930
Released March 2021 and shipped with Puppet 7.5.0.
We would like to thank the following Puppet community members for their contributions to this release: smokris..
Azure metadata fact. This release adds the
az_metadatafact 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.providerfact for Azure identification on Linux and Windows platforms. FACT-1847
lsbpackages are missing The
os.distrofacts are now resolved without the
lsb_releaseon the following platforms: RHEL, Amazon, SLES. The information is read from the system in the same way. Note that the
os.distro.specificationfact, which refers to
lsbversion, is available only if the
lsb_releasehas 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 showcommand, if something can not be retrieved with
SocketParser) and the Linux resolver (combines the data from the other classes). FACT-2915
Permission denied error when reading Facter cache during PE 2021 upgrade. Facter 4 no longer loads
facter.conffrom the default location when running on jRuby. FACT-2959
Facter 4 reports
lsbmajdistreleaseon Ubuntu differently from Facter 3. Previously, the
lsbmajdistreleasefact 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
QueryParserlogic 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.soon SmartOS. Previously, Facter tried to load an incompatible (32-bit)
libsocket.sofrom a hardcoded path using
ffiand 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.getaddrinfocalls failed. Now, if any of the Socket method calls fail, Facter can retrieve the information using FFI methods. FACT-2944
puppet facts showcommand logs error when stdlib is installed. This release fixes an issue where
Facter.valuedid 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
pe-bolt-serverraises 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
ttlstime units available in Facter 4:
d. Note that singular time units are also accepted, for example,
Facter.conffile does not accept singular
ttlsunits. Previously, Facter failed if the
ttlsunit in the
facter.conffile was a plural ("days" and "hours"). Facter now accepts a singular noun ("day" and "hour").
Released February 2021.
This release includes a resolved issue and minor maintenance changes. For the latest features, see the release notes for Facter 4.0.50.
facter -pcommand is now supported. The
facter -pcommand did not work in versions Facter 4.0.50 and earlier. FACT-2818
Released February 2021 and shipped with Puppet 7.4.0.
Networking fact improvements for AIX. The AIX networking resolver now uses FFI to detect networking interfaces and IPs. Previously, VLANs and secondary IPs were not displayed. FACT-2878
Improved performance for blocking
legacyfacts. This release improves the performance of blocking legacy facts by implementing a different mechanism. The new mechanism does not allow legacy groups to be overriden by a group with the same name in
fact-groups. If you add a legacy group in
fact-groups, it is ignored. The new implementation is faster for use cases involving multiple custom facts that depend on core facts. FACT-2917
Facter::Core::Executiondoes not set status variables in Facter 4. This release reimplements
Facter error message —
no implicit conversion of nil into String— when determining processor speed on Linux. Facter now handles processor speed values where
log10is not set (3, 6, 9, 12). FACT-2927
Facter fails "closed" if the facter.conf file is invalid. Previously, Facter failed when an invalid config file was provided. Facter now logs a warning message stating that the parsing of the config file failed and continues retrieving facts with the default options. FACT-2924
Domain on Windows does not prioritise registry. Facter now prioritises information from registry on Windows, instead of network interface domain names. FACT-2923
LinuxMint Tessa not recognized. Previously, the
os.releasefact was retrieved from the
/etc/os-releasefile, but Facter 3 read other release files based on operating system (OS). Now Facter retrieves
os.releasefrom the specific release file for every OS. FACT-2921
Released January 2021 and shipped with Puppet Platform 7.3.0.
Aggregate facts are broken. Previously, Facter broke when trying to add a debug message for the location where aggregate facts are resolved from. This only happened with aggregate facts that returned an array or hash without having an aggregate block call. FACT-2919
Released January 2021.
Rewritten tests for Linux networking resolver. This release refactors the Linux networking resolver, including fixing the unit tests and adding new ones. FACT-2901
Facter 4.0.x does not return the domain correctly when set in the registry. Previously, Facter did not retrieve the domain correctly on Linux and resulted in a faulty FQDN facts. Facter also failed to retrieve domain facts when Windows did not expose the host's primary DNS suffix. This is now fixed. FACT-2882
Legacy group blocks processors core fact. Blocking legacy facts no longer blocks processors core fact. FACT-2911
Facter Hocon output format. The --hocon option now functions as intended. FACT-2909
Legacy blockdevice vendor and size facts not resolving. This release fixes
blockdevice_*_sizefacts not resolving on AIX, and
blockdevice_*_vendorfacts not resolving on Linux and Solaris. FACT-2903
Facter detects OS family without checking or translating the information. Previously, Facter detected the OS family by reading
/etc/os-releasewithout checking or translating the information. This is now fixed and Facter translates the
/etc/os-releaseto Facter known families. FACT-2902
Released December 2020 and shipped with Puppet 7.1.0.
scope6fact for per binding. This release adds the
scope6fact under every ipv6 address from the
Support for AWS IMDSv2. This release
updates the EC2 fact to use IMDSv2 to authenticate. To use v2, set the
AWS_IMDSv2environment variable to
true. Note that the token is cached for a maximum of 100 seconds.
Facter 4 does not resolve hostname facts.
Previously, Facter failed when
Socket.getaddrinfowas 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_hashRuby Facter API's. The custom facts with nil value are still returned by
Facts failing on machines with VLANs. With this release,
dotsin 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_virtualfact from boolean to string. This release fixes a regression that caused the
is_virtualto be a string instead of a boolean. FACT-2869
External facts are loaded when using
puppet lookupfor a different node. The
load_externalAPI 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_hashreturned a different data type to Facter 3. This release ensures the
to_hashmethod 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/listfile 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.interfacesnow display secondary interfaces (with or without the label) and the
VLANs.MACaddress 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
Released November 2020 and shipped with Puppet 7.0.0.
- Operating system hierarchy. Facter 4 introduces a hierarchy for operating systems. The hierarchy allows you to load facts from the child and all parents. If the same fact is present in a child and a parent, the one from the child takes precedence. FACT-2555
- Rake task for mapping fact name and fact class. To improve the visibility of which facts are loaded for an operating system, Facter 4 has a rake task that prints all facts and the class that resolved that fact. FACT-2557
- Blocklist. Facter 4 allows you to block facts at a granular level — you can block any fact from the fact hierarchy, for both groups of facts and individual facts. FACT-1976
Block legacy facts. Legacy facts are a subtype of core facts and you can
now block them, like any core fact, using the
Block custom facts.
Facter 4 allows you to block custom facts. You
can add the fact to the
Block external facts.
Facter 4 allows you to block external facts.
Blocking external facts is different from blocking core and custom facts — you
need to specify the name of the file from which external facts are loaded to
The puppet facts show command. The
facter --puppetcommands have been replaced with puppet facts show. FACT-2719
Group for legacy facts. The legacy group contains all the legacy facts.
You can find it in
lib/facter/config.rband can block it in
fact-groupsgroup. You can define your own custom groups in
facter.confusing the new
facter.confaccept predefined groups, custom groups or fact names. You must use the file name when using external facts. FACT-2331
Define fact groups for blocking or caching. You can define new fact
facter.conf, and use the group to block or cache facts. FACT-2515
External fact caching. To cache external facts, use the filename of the
external fact when setting the
CLI compatible with Facter 3.
Facter 4 reimplemented the Facter 3 command line interface using
- Loaded facts based on operating system hierarchy. To improve performance, Facter 4 only loads the files and facts that are needed for the operating system it is running on. FACT-2093
- Log class name in log messages. Improved logging in Facter 4 prints the class from which the log was generated. FACT-2036
--timingoption to native facter. The restored
-targuments allow you to see how much time it took each fact to resolve. FACT-1380
- (Experimental). Reverted parallel resolution of facts. To improve performance, facts are resolved in parallel on JRuby. FACT-2819
Timeout on resolution. You can now specify the
timeoutattribute in custom fact options. FACT-2643
core facts . To cache core facts, add the fact group to
ttls. Fact values are stored and retrieved on future runs. After the
ttlsexpires, the fact is refreshed. FACT-2486
- Fix Ruby 2.7 warning on Facter 4. Facter 4 now supports Ruby 2.7. FACT-2649
Facter does not support timeout for shell
calls. External commands have a timeout, and if they do not complete in
the given time, they are forced stop. The default timeout is 300 seconds. You
can now specify a timeout using the
Fact names are treated as
regexand can lead to caching of unwanted facts. The
regexused to detect facts has been improved to distinguish between fact groups and legacy facts. FACT-2787
- Facter uptime shows host uptime inside docker container. Previously, the kernel only reported the host uptime inside a Docker container. You can now see the container uptime. FACT-2737
A fact present in two groups does not get cached if the second groups has a
ttls. If a fact is present in two groups, and both of them have a
facter.conf, the lowest
ttlsis takes precedence. FACT-2786