Facter release notes
These are the new features, resolved issues, and deprecations in this version of Facter.
On this page:
Facter 4.15.0
Released in September 2025 with Puppet Core 8.15.0. This release of Facter was necessary to accommodate our release process. No new features or fixes are introduced.
Facter 4.14. 0
Released in July 2025 and shipped with Puppet Core 8.14.0. This version of Facter includes a bug fix to help prevent recursive scanning and improved handling of binary (ASCII-8 BIT) strings.
Resolved issues
Ruby no longer recursively scans lib. Previously, when loading the puppet gem and the current working directory was /, Ruby scanned the lib directory. This was due to a bug in the gemspec generated during the build process. This has been fixed for both the puppet and facter gems. PA-7583
Facter handling of binary (ASCII 8-BIT) strings is improved. Previously, when fact values had binary data, Facter failed. In this version, the LegacyFacter::Util::Normalization.normalize_string was updated to accept fact values with binary (ASCII 8-BIT) without immediately failing. Now, when a fact with ASCII 8-BIT is detected and can be force encoded to UTF-8, a debug message including the fact name is logged. When the fact value cannot be successfully encoded to UTF-8, Facter fails with an error including the fact name and value. FACT-3497
Facter 4.13.0
Released in June 2025 and shipped with Puppet Core 8.13.0. Facter now returns networking facts as UTF-8 and the dmi.chassis.type fact now reports SMBIOS values correctly.
Resolved issues
Facter now returns networking facts as UTF-8. Facter previously returned networking facts as binary data, causing puppet apply to submit binary data to PuppetDB. Puppet now correctly returns networking facts as UTF-8, and if other facts return a binary value, a warning message is returned. FACT-3494
The dmi.chassis.type fact now reports SMBIOS values correctly. The dmi.chassis.type fact previously only reported some values for SMBIOS, it now reports all values in the SMBIOS specification. The following values were added: IoT Gateway, Embedded PC, Mini PC, and Stick PC. FACT-3495
Facter 4.12.0
Released in April 2025 and shipped with Puppet Core 8.12.0.
Windows Server 2025 is now correctly identified. An issue that prevented Facter from correctly identifying the os.release for Windows Server 2025 was resolved.
Facter 4.11.0
Released in February 2025 and shipped with Puppet 8.11.0. This release resolves an issue with virtualization on the Docker platform and an issue related to cloud providers.
Resolved issues
Facts within a Docker container are now correctly set. When running Puppet agent 7.32.1 inside a Docker container, the hypervisors and virtual facts were incorrectly set. In addition, the following message was displayed:
Warning: Facter: Container runtime, 'docker', is unsupported, setting to, 'container_other'.
The issue was introduced in Facter 4.9.0 and is present in Facter 4.10.0. The issue is resolved in version 4.11.0 to ensure that Facter detects the Docker container.
FACT-3488
Platforms are now correctly identified for users of the Kernel-based Virtual Machine (KVM), the Xen Cloud Platform (XEN), and the Xen hardware virtual machine (XEM HVM). Previously, Facter incorrectly assigned Amazon Web Services (AWS) to the cloud.provider fact when these platforms were used and there was valid Amazon Elastic Compute Cloud (Amazon EC2) metadata.
Facter is now updated to use the virt-what component to populate the cloud.provider fact in these circumstances. If virt-what cannot be used and Amazon EC2 data exists, Facter identifies AWS as the cloud provider.
FACT-3491
An issue that prevented Facter from detecting libvirt-lxc containers is resolved. In a previous release, an update was introduced that prevented Facter from detecting Linux Containers (LXC) managed by the libvirt management tool. The change is reverted to ensure that Facter can detect libvirt-lxc containers.
FACT-3484
Facter 4.10.0
Released in October 2024 and shipped with Puppet 8.10.0.
Resolved issues
Fixed an issue when resolving the host domain name. Previously, when a host without an assigned domain used search . as the search domain in resolv.conf, Puppetreported an incorrect value for networking.fqdn and networking.domain. This issue was addressed by having Facter ignore search entries that start with a dot (.) in resolv.conf, to help ensure that the host FQDN is correctly resolved. Community member Geod24 submitted this issue and submitted a fix. FACT-3459
Facter 4.9.0
Released in September 2024 and shipped with Puppet 8.9.0.
Enhancements
- Updated Facter schema and the process for
adding new facts. The Facter schema
(
facter.yaml) was updated to include all facts added since the schema was last updated. The CONTRIBUTING document now includes instructions which community members should follow when adding new facts, to help ensure that the Facter schema is correctly updated. In addition, there is now an acceptance test which verifies that all facts conform to the schema on each platform. FACT-3474 - Added partition type UUID to Facter output for GPT-based systems. For GPT-based systems, Facter output for partitions now includes the partition type UUID. Community member jcpunk contributed to this update. FACT-3140
Resolved issues
Restored support for the LXC container runtime. Fixed a regression in Facter 4.8.0 that prevented it from identifying the LXC container runtime. Community member torstenfohrer submitted this issue, and community member lollipopman contributed to the fix. FACT-3477
Facter 4.8.0
Released July 2024 and shipped with Puppet 8.8.1.
Enhancements
- Support for Microsoft Azure Linux. Operating system facts were added for users of the Microsoft Azure Linux distribution. FACT-3471
- Update for the Arch Linux distribution. Operating system facts are now supported on Arch Linux. Community member bastelfreak contributed this update. FACT-3114
- Support for the CRI-O container runtime. CRI-O is an implementation of the Kubernetes Container Runtime Interface that supports Open Container Initiative-compatible runtimes. Community member lollipopman contributed this update. FACT-3202
- New fact for x86_64 CPU microarchitecture levels. A fact was added to reflect the levels of x86_64 CPU microarchitectures. FACT-3453
Resolved issues
AIX mountpoints now include server names. Previously, Facter excluded the server name for mountpoints on
IBM AIX. In this release, the mountpoint server names are included in the
servername:/path/to/mountpoint format as reported for other
operating systems. FACT-3463
Facter 4.7.1
Released June 2024 and shipped with Puppet 8.7.0.
Enhancements
- Facter now accepts new versions of the
ffiRuby gem. An update was implemented to ensure that Facter will remain compatible with new releases offfi.
Facter 4.7.0
Released April 2024 and shipped with Puppet 8.6.0.
Enhancements
- Support for OpenBSD. Added support for OpenBSD. This addition contributed by community member buzzdeee. FACT-3163
Resolved issues
- Re-add Ruby 2.5 support. Added support for Ruby 2.5.
- Use of cloud provider facts can result in nil dereferences. Patched the two cloud providers' access to metadata to avoid nil dereferences.
- Evaluate confine block in case-insensitive way. Previously, when a user provided a confine block, Facter would downcase the value when evaluating it. This change retains the existing behavior of evaluating a confine block with a downcased fact value, while adding evaluation with the raw fact value to ensure expected behavior.
Facter 4.6.1
Released March 2024 and shipped with Puppet 8.5.1.
Resolved issues
- Regression in
os.windowsfacts. In Facter 4.6.0, thevalueparameter was misnamed, causing incorrect values to be returned. This has been fixed. FACT-3455
Facter 4.6.0
Released February 2024 and shipped with Puppet 8.5.0.
No release notes.
Facter 4.5.2
Released January 2023 and shipped with Puppet 8.4.0.
Enhancements
- Add ssh {384,521} ecdsa facts. Fixed a regression in Facter 4 that prevented it from reporting on 384 and 521-bit ecdsa ssh keys.
Resolved issues
- Reported memory usage is wrong on FreeBSD. Corrected memory usage facts on FreeBSD. Community contribution from user smortex.
- Size calculations for AIX block device and partitions. Facter on AIX incorrectly reported the total size of disks and overcounted the partition size when logical volumes were mirrored to multiple physical volumes. This has been fixed. Community contribution from user loopway.
- uname resolver does not handle empty results. Fixed an issue where Facter would error when uname did not return valid output.
- Facter on Solaris 10 does not close socket descriptors, causing puppet run failures. Fixed an issue where Facter would error when many network interfaces were present on a Solaris machine.
- Not enough os.distro.release information for Amazon Linux. The
os.distro.release.fullandos.release.fullfacts now return all version components such as2023.1.20230912. - Cloud fact does not resolve on Amazon Linux 2023. Facter now correctly resolves the
cloudfact toawsandvirtualfact tokvmwhen running on Nitro hypervisors.
Facter 4.5.1
Released November 2023 and shipped with Puppet 8.3.1.
Resolved issues
- Non-hash external fact data in YAML or JSON files causes fatal exceptions in Facter 4. Fixed an issue where an external fact of an invalid data type caused a fatal exception in Facter. FACT-3433
- New fact error after upgrading v2021.7.5. Fixed an issue where DMI facts caused an error in Solaris non-global zones. FACT-3435
Facter 4.4.3
Released October 2023 and shipped individually.
Resolved issues
- Required gem not included as runtime dependency A runtime dependency (sys-filesystem) was mistakenly removed in Facter 4.4.2, which caused some filesystem-related facts to cause an error when running Facter as a gem. This dependency has been re-added to Facter. FACT-3423
Facter 4.4.2
Released August 2023 and shipped with Puppet 8.2.0.
Resolved issues
- Facter 4 reports os.name as
SLES_SAPon Suse Linux for SAP instead of justSUSE. This along with FACT-3422 fixed how Facter reads the/etc/os-releasefile.os.nameandos.distrofacts work on SLES SAP operating system now. FACT-3162 - Facter fails on
mountpointsfact on Solaris 10 with non-global zones which have NFS mounts. Fixed an issue with the Solaris mountpoint resolver. FACT-3187 - Error on on Solaris non-global zone after upgrading to PE2021.7.2. Facter guards against nil when determining the primary interface for the networking fact. FACT-3188
- Don't rescue NoMethodError. When rescuing LoadError and NameErrors, Facter logs a descriptive message at an error level so debugging Facter will be easier and error messages will not be hidden in the debug level. FACT-3207
Facter 4.4.1
Released June 2023 and shipped with Puppet 8.1.0.
Resolved issues
- Facter on Solaris 10 leak file descriptors, causing Puppet run failures.Facter no longer leaks file descriptors when attempting to resolve network interfaces. FACT-3196
- Facts with regular expression matching characters in the name of the fact cause Facter 4 to crash. Previously, regex metacharacters were not escaped when parsing names. The fix for FACT-3178 also fixed this issue. FACT-3199
- Facter trying to resolve augeas version on Windows.Facter no longer tries to resolve the augeas fact on Windows since augeas packages and gems are not shipped for any Windows platforms for Puppet agent packages. FACT-3197
facter -p --no-external-factsis unusable.Facter no longer raises when run with the-pand--no-external-factsoption. Previously, this occurred because Facter thought the--external-diroption (which cannot be used with--no-external-facts) was also passed in.- Facter mixes up Oracle Linux and Red Hat.
os.distro.descriptionandos.distro.idfacts were previously misreporting Oracle Linux as Red HatLinux, fixed now. FACT-3180 - Facter
ldom.domainrole.implfails on Solaris 11, SPARC. Now, when Facter searches for a fact that matches the user query, regex metacharacters, like dots (.), are escaped. Previously, metacharacters were not escaped which resulted in a regex that compared fact names to the user query to resolve and return the wrong fact. FACT-3178 - Networking facts on AIX incomplete if network device is in down state. On AIX, if the network was in down state, Facter errored out. Now Facter correctly resolves the network information. FACT-3167
- Facter fails on the
/etc/os-releasethat contains the#./etc/os-releasefiles can have comments (#) without raising an error. Comments are allowed in these files according to: https://www.man7.org/linux/man-pages/man5/os-release.5.html. FACT-3151 gce.project.attributes.sshKeysis a string instead of an array.Facter 4 now correctly returns the value of thegce.project.attributes.sshKeysfact as an array of strings as it did in Facter 3. FACT-3136- Processor ISA fact on Linux reports wrong
data if the string contains a period.Facter no longer modifies
uname -poutput when reporting theprocessors.isafact on Linux platforms. FACT-3089 - Facter 4 fails to guard against
recursion.Facter 3 guarded against recursive calls to
facterinside external facts; this has now been added to Facter 4. If an external fact calls out tofacterwithout specifying theno-external-facts, Facter warns the user and skips falling into callingfacterrecursively. FACT-2772
Facter 4.4.0
Released April 2023 and shipped with Puppet 8.0.0.
Enhancements
- Switch to
require_relative. Facter now usesrequire_relativeinstead ofrequire. FACT-3184
Facter 4.3.1
Released April 2023 and shipped with Puppet 7.24.0.
No release notes.
Facter 4.3.0
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.
Resolved issues
facter.resolvereturns a subclass of Hash, not Hash. Thefacter.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
Facter 4.2.14
Released December 2022 and shipped with Puppet 7.21.0.
Resolved issues
-
ArgumentErrorwithinstall.rb. Facter'sinstall.rbscript is now compatible with Ruby 3.x. Community contribution from jcharaoui . FACT-3159
Facter 4.2.13
Released October 2022 and shipped with Puppet 7.20.0.
Resolved issues
- 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. Restoredec2_metadatafact to Facter 4 on FreeBSD. Contirbuted by Puppet community member raybellis. FACT-3137ipaddress_*andipaddress6_*facts missing on FreeBSD. Restored theipaddresslegacy facts on FreeBSD. Contributed by Puppet community member smortex. FACT-3130custom-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
Facter 4.2.12
Released September 2022 and shipped with Puppet 7.19.0.
Enhancements
- Support for ERB changes introduced in Ruby 3.1. Facter now supports ERB changes introduced in Ruby 3.1. FACT-3102
Resolved issues
- 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
Windows commands. 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
Facter 4.2.11
Released August 2022 and shipped with Puppet 7.18.0.
Enhancements
- Extend
cloud.providerfact to Google Compute Engine Thecloud.providerfact now returnsgcewhen running on Google Compute Engine. Contributed by Puppet community member natemccurdy. FACT-1557
Resolved issues
- 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
Facter 4.2.10
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.
Resolved issues
- 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
- virt-what-1.22-1 changes
virtual=kvmtovirtual=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
Facter 4.2.9
This version was never released.
Facter 4.2.8
Released March 2022 and shipped with Puppet 7.15.0.
Resolved issues
fact diskscannot get serial of disks. Updated Facter to use the full path for lsblk, sofact diskscan now show serial of disks. FACT-3100
Facter 4.2.7
Released January 2022 and shipped with Puppet 7.14.0.
No release notes.
Facter 4.2.6
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.
New features
- Add serial number and WWID to disk fact. Added disks serial number and WWID to the disks fact. FACT-3083
Resolved issues
DEBUG Facter::Resolvers::Aix::Mountpoints - Could not resolve mountpointswhen runningfacter mountpoints --debugon AIX. Fixes Facter AIX mountpoint resolver to add correct data to the mountpoint fact when using NFS mountpoints. FACT-3094os.namevalue changed for OS VirtuozzoLinux. Restored Facter3's value ofos.namefor VirtuozzoLinux. FACT-3087- Facter fails if there are invalid
characters in dmidecode. Replaced invalid UTF characters in
dmi.rb. FACT-3081 - 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 thecachefilewhen 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 acceptnoneas a log level even though it was supported as per--helpoutput. This fix aligns the behaviour with Facter 3 by acceptingnoneas 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
Facter 4.2.5
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.
New features
DisplayVersionfact for Windows. This release adds a new fact calledos.windows.display_version. This fact reads the version from theDisplayVersionregistry 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
Resolved issues
- 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 theFacter::Core::Execution.executearguments between Facter 3 and Facter 4. The.executemethod now accepts atimeoutoption, 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.fullandos.release.majorfacts now correctly detect Windows 2022 and output2022, instead of2019. FACT-3075
Facter 4.2.4
Released September 2021 and shipped with Puppet 7.11.0.
Resolved issues
- AIX reporting
could not resolve mountpointserror. 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
Facter 4.2.3
Released August 2021 and shipped with Puppet 7.10.0.
Enhancements
-
Reduced logs emitted. This release reduces the number of redundant logs emitted by Facter. FACT-3001
Resolved issues
-
The
pacmanpackage provider fails in Facter >= 4.1.1. This release fixes theoperatingsystemfact on Archlinux and Manjarolinux. FACT-3043
Facter 4.2.2
Released July 2021 and shipped with Puppet 8.11.0.
Resolved issues
- 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
Facter 4.2.1
Released June 2021 and shipped with Puppet 7.8.0.
Enhancements
- Add flags to the help menu. This release adds the following short flags
to the help menu:
-v [--version],-p [--puppet]and-h [--help]. FACT-3044 - Facter retrieves
Ec2metadata usingIMDSv2. This release improves the way Facter retrievesec2_metadataby usingIMDSv2instead ofIMDSv1. In this release, Facter automatically usesIMDSv2to retrieve an AWS token to add to theX-aws-ec2-metadata-tokenheader. FACT-3042
Resolved issues
- Facter 4 CLI did not accept concatenated
short flags.Facter 3 allowed short flags to be combined,
such as
-jpor-jd. In Facter 4, you must declare short flags separately, such as-j -por-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 howntdll.dllwas loaded on Windows. FACT-3048
Facter 4.2.0
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.
New features
- New
os.macosx.version.patchfact. Theos.macosx.version.minorfact has been split into an additionalos.macosx.version.patchfact (on macOS 11+). Contributed by Puppet community member ccaviness. FACT-3031 - New
flagskey. This release adds aflagskey to thenetworking.interfaces.*.bindings6fact, which parses the lower 8-bit encoded flags from/proc/net/if_inet6. Note that the higher bit flags (managetempaddr,noprefixroute,mcautojoin,stableprivacy) are not shown in the fact output. Contributed by Puppet community member b4ldr. FACT-2907
Enhancements
- 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
Resolved issues
- Invalid
rubysitedirvalue when Ruby is compiled withoutsitedir. This release fixes an issue where Facter reported an invalid value for theruby.sitedirfact — if Ruby was compiled without thesitediroption. FACT-3041 - Undefined method
each_linefornil:NilClass. This release fixes a bug where multi-line commands executed through theFacter::Util::ResolutionAPI were not expanded correctly. FACT-3040 - Facter executes
which lsblkandwhich blkidfor each partition. This release fixes an issue where Facter executedwhich lsblkandwhich blkidfor each partition. Now these commands are executed once per Facter run, improving performance and log readability. FACT-3035 - Facter returns
TypeErroron non-existent indexes. Previously, when accessing array values by indexes, Facter raised aTypeErrorif a non-existent index was searched. This is now fixed and Facter no longer errors. FACT-3030 - Facter 4 calls
deprecated
xen-toolstackscript when resolving thexenfact. Previously, Facter called thexen-toolstackscript when resolving thexenfact. 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
Facter 4.1.1
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.
Enhancements
- The
processorsfact includessocketsandthreadsdetails. This release adds thecores per socketandthreads per coreinformation to theprocessorsfact. FACT-2992
Resolved issues
- 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 theResolvedFacttype 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
Facter 4.1.0
Released April 2021.
Resolved issues
-
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
stdlibinsidepuppetserverREPL shell. Previously, Facter failed to execute the first external command when running under JRuby. This issue only appeared when runningpuppetserverfrom 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
-
The
selinuxfact is not properly detected by Facter 4.Facter 4 now takes the same approach as Facter 3 — checking for both the mountedselinuxfilesystem and the configuration file. If either are absent, Facter does not fill in theselinuxfact. FACT-2994 -
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 ofhypervisorfacts 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 thehypervisors.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 themountpoints.optionsfacts on macOS, matching the behavior of Facter 3. FACT-2984 -
Facter 4 outputs
mountpointsfacts differently on Solaris. This release fixes differences in themountpointsfact 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 theprocessors.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
memorysize_mb. FACT-2967 -
Facter 4 outputs virtual facts differently on Amazon 6. The virtual fact is now detected as
xeninstead ofxenhvmon AmazonLinux 6. FACT-2986 -
Facter 4 outputs the
hypervisorsfact differently on Amazon 7. This release fixes differences in thehypervisorsfact 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 thefact_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
DateandTimeas supported values for custom facts. FACT-2930
Facter 4.0.52
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.
New features
-
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
Enhancements
-
Dependency to
lsbpackages are missing Theos.distrofacts are now resolved without thelsb_releaseon the following platforms: RHEL, Amazon, SLES. The information is read from the system in the same way. Note that theos.distro.specificationfact, which refers tolsbversion, is available only if thelsb_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 theip route showcommand, if something can not be retrieved withSocketParser) 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.conffrom the default location when running on jRuby. FACT-2959 -
Facter 4 reports
lsbmajdistreleaseon Ubuntu differently from Facter 3. Previously, thelsbmajdistreleasefact 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 usingffiand 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 -
The
puppet facts showcommand logs error when stdlib is installed. This release fixes an issue whereFacter.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 callingFacter.value. FACT-2937 -
Facter 4
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
the following
ttlstime 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,miliandnano. FACT-2962 - The
Facter.conffile does not accept singularttlsunits. Previously, Facter failed if thettlsunit in thefacter.conffile was a plural ("days" and "hours"). Facter now accepts a singular noun ("day" and "hour").
Facter 4.0.51
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.
Resolved issues
- The
facter -pcommand is now supported. Thefacter -pcommand did not work in versions Facter 4.0.50 and earlier. FACT-2818
Facter 4.0.50
Released February 2021 and shipped with Puppet 7.4.0.
Enhancements
-
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 infact-groups. If you add a legacy group infact-groups, it is ignored. The new implementation is faster for use cases involving multiple custom facts that depend on core facts. FACT-2917
Resolved issues
-
Facter::Core::Executiondoes not set status variables in Facter 4. This release reimplementsOpen3.popen3to useProcess.waitinstead ofProcess.detach. FACT-2934 -
Facter error message —
no implicit conversion of nil into String— when determining processor speed on Linux. Facter now handles processor speed values wherelog10is 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 retrievesos.releasefrom the specific release file for every OS. FACT-2921
Facter 4.0.49
Released January 2021 and shipped with Puppet Platform 7.3.0.
Resolved issues
-
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
Facter 4.0.48
Released January 2021.
Enhancements
-
Rewritten tests for Linux networking resolver. This release refactors the Linux networking resolver, including fixing the unit tests and adding new ones. FACT-2901
Resolved issues
-
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, andblockdevice_*_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 theid_likefield from/etc/os-releaseto Facter known families. FACT-2902
Facter 4.0.47
Released December 2020 and shipped with Puppet 7.1.0.
New features
- Added
scope6fact for per binding. This release adds thescope6fact under every ipv6 address from theinterface.bindings6fact. FACT-2843 - Support for AWS IMDSv2. This release
updates the EC2 fact to use IMDSv2 to authenticate. To use v2, set the
AWS_IMDSv2environment variable totrue. 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.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_user_output,valuesandto_hashRuby Facter API's. The custom facts with nil value are still returned byvalue,factand[]API's. FACT-2881 -
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 theis_virtualto be a string instead of a boolean. FACT-2869 -
External facts are loaded when using
puppet lookupfor a different node. Theload_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 methodto_hashreturned a different data type to Facter 3. This release ensures theto_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 theVLANs.MACaddress is correctly displayed for bonded interfaces. If DHCP is not found, use thedhcpcd -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
Facter 4.0.46
Released November 2020 and shipped with Puppet 7.0.0.
New features
- 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
blocklistfromfacter.conf. FACT-2259 - Block custom facts. Facter 4 allows you to block custom facts. You
can add the fact to the
blocklistfromfacter.conf. FACT-2718 - 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
blocklistinfacter.conf. FACT-2717 - The puppet facts show command. The
facter -pandfacter --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 infacter.conf. FACT-2296 - The
fact-groupsgroup. You can define your own custom groups infacter.confusing the newfact-groupsgroup. Theblocklistandttlsgroups fromfacter.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
groups in
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
ttlsinfacter.conf. FACT-2619
Enhancements
- CLI compatible with Facter 3. Facter 4 reimplemented the Facter 3 command line interface using
thorgem. FACT-1955 - 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
- Restored
--timingoption to native facter. The restored--timingand-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 - Caching core facts . To cache core facts, add the fact group to
facter.confttls. Fact values are stored and retrieved on future runs. After thettlsexpires, the fact is refreshed. FACT-2486
Resolved issues
- 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
limitattribute inFacter::Core::Execution.execute. FACT-2793 - Fact names are treated as
regexand can lead to caching of unwanted facts. Theregexused 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 attlsdefined infacter.conf, the lowestttlsis takes precedence. FACT-2786