Facter release notes
These are the new features, resolved issues, and deprecations in this version of Facter.
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.
- Update for the Arch Linux distribution. Operating system facts are now supported on Arch Linux. Community member bastelfreak contributed this update.
- 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.
- New fact for x86_64 CPU microarchitecture levels. A fact was added to reflect the levels of x86_64 CPU microarchitectures.
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.
Facter 4.7.1
Released June 2024 and shipped with Puppet 8.7.0.
Enhancements
-
Facter now accepts new versions of the
ffi
Ruby 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.windows
facts. In Facter 4.6.0, thevalue
parameter 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.full
andos.release.full
facts now return all version components such as "2023.1.20230912". -
Cloud fact does not resolve on Amazon Linux 2023.
Facter now correctly resolves the
cloud
fact toaws
andvirtual
fact tokvm
when 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_SAP" on
Suse Linux for SAP instead of just "SUSE". This along with FACT-3422
fixed how Facter reads the
/etc/os-release
file.os.name
andos.distro
facts work on SLES SAP operating system now. FACT-3162 -
Facter fails on
mountpoints
fact 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-facts
is unusable. Facter no longer raises when run with the-p
and--no-external-facts
option. Previously, this occurred because Facter thought the--external-dir
option (which cannot be used with--no-external-facts
) was also passed in. -
Facter mixes up Oracle Linux and Red Hat.
os.distro.description
andos.distro.id
facts were previously misreporting Oracle Linux as Red Hat Linux, fixed now. FACT-3180 -
Facter
ldom.domainrole.impl
fails 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-release
that contains the#
./etc/os-release
files 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.sshKeys
is a string instead of an array. Facter 4 now correctly returns the value of thegce.project.attributes.sshKeys
fact 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 -p
output when reporting theprocessors.isa
fact on Linux platforms. FACT-3089 -
Facter 4 fails to guard against
recursion.
Facter 3 guarded against recursive calls to
facter
inside external facts; this has now been added to Facter 4. If an external fact calls out tofacter
without specifying theno-external-facts
, Facter warns the user and skips falling into callingfacter
recursively. FACT-2772
Facter 4.4.0
Released April 2023 and shipped with Puppet 8.0.0.
Enhancements
-
Switch to
require_relative
. Facter now usesrequire_relative
instead 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.resolve
returns a subclass of Hash, not Hash. Thefacter.resolve
API 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
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 CP850
in 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_metadata
is missing on FreeBSD. Restoredec2_metadata
fact to Facter 4 on FreeBSD. Contirbuted by Puppet community member raybellis. FACT-3137 -
ipaddress_*
andipaddress6_*
facts missing on FreeBSD. Restored theipaddress
legacy facts on FreeBSD. Contributed by Puppet community member smortex. FACT-3130 -
custom-dir
is 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
echo
for 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.provider
fact to Google Compute Engine Thecloud.provider
fact now returnsgce
when 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-16LE
Fixed 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=kvm
tovirtual=redhat
. Resolved issue parsing output from virt-what on a KVM system. FACT-3115 -
Windows 11 shows up as Windows 10 21H2. Corrected
os.release
facts 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 disks
cannot get serial of disks. Updated Facter to use the full path for lsblk, sofact disks
can 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 mountpoints
when runningfacter mountpoints --debug
on AIX. Fixes Facter AIX mountpoint resolver to add correct data to the mountpoint fact when using NFS mountpoints. FACT-3094 -
os.name
value changed for OS VirtuozzoLinux. Restored Facter3's value ofos.name
for 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 thecachefile
when it is not required. FACT-3079 -
Inconsistent values coming from
facter-ng
output. Fixed Facter 4 output for yaml external facts when the fact value is false. FACT-3077 -
--log-level none
throws exception. Before this release, Facter 4 did not acceptnone
as a log level even though it was supported as per--help
output. This fix aligns the behaviour with Facter 3 by acceptingnone
as a log level. FACT-3074 -
Facter timezone utf8 problem. This
release adds a new
timezone
resolver 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
-
DisplayVersion
fact for Windows. This release adds a new fact calledos.windows.display_version
. This fact reads the version from theDisplayVersion
registry key. FACT-3058 -
Option to show HTTP debug logs. This release adds the
--http_debug
option 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.execute
timeout. This release fixes inconsistencies with theFacter::Core::Execution.execute
arguments between Facter 3 and Facter 4. The.execute
method now accepts atimeout
option, 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.full
andos.release.major
facts 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 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
sysctl
that 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
pacman
package provider fails in Facter >= 4.1.1. This release fixes theoperatingsystem
fact on Archlinux and Manjarolinux. FACT-3043
Facter 4.2.2
Released July 2021 and shipped with Puppet 8.9.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
Ec2
metadata usingIMDSv2
. This release improves the way Facter retrievesec2_metadata
by usingIMDSv2
instead ofIMDSv1
. In this release, Facter automatically usesIMDSv2
to retrieve an AWS token to add to theX-aws-ec2-metadata-token
header. FACT-3042
Resolved issues
-
Facter 4 CLI did not accept concatenated
short flags.
Facter 3 allowed short flags to be combined,
such as
`-jp`
or-jd
. In Facter 4, you must declare short flags separately, such as-j -p
or-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
Ec2
fact. To solve this issue, Facter now no longer sends HTTP requests if a token is nil.FACT-3050 -
Incorrect use of
ffi_lib
on Windows. This release fixes howntdll.dll
was 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.patch
fact. Theos.macosx.version.minor
fact has been split into an additionalos.macosx.version.patch
fact (on macOS 11+). Contributed by Puppet community member ccaviness. FACT-3031 -
New
flags
key. This release adds aflags
key to thenetworking.interfaces.*.bindings6
fact, 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
rubysitedir
value when Ruby is compiled withoutsitedir
. This release fixes an issue where Facter reported an invalid value for theruby.sitedir
fact — if Ruby was compiled without thesitedir
option. FACT-3041 -
Undefined method
each_line
fornil:NilClass
. This release fixes a bug where multi-line commands executed through theFacter::Util::Resolution
API were not expanded correctly. FACT-3040 -
Facter executes
which lsblk
andwhich blkid
for each partition. This release fixes an issue where Facter executedwhich lsblk
andwhich blkid
for each partition. Now these commands are executed once per Facter run, improving performance and log readability. FACT-3035 -
Facter returns
TypeError
on non-existent indexes. Previously, when accessing array values by indexes, Facter raised aTypeError
if a non-existent index was searched. This is now fixed and Facter no longer errors. FACT-3030 -
Facter 4 calls
deprecated
xen-toolstack
script when resolving thexen
fact. Previously, Facter called thexen-toolstack
script when resolving thexen
fact. 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
processors
fact includessockets
andthreads
details. This release adds thecores per socket
andthreads per core
information to theprocessors
fact. FACT-2992
Resolved issues
-
Facter 4 user query overwritten when Facter is called outside of
setcode
in 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.fact
returns 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 theResolvedFact
type 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-resolution
global 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
stdlib
insidepuppetserver
REPL shell. Previously, Facter failed to execute the first external command when running under JRuby. This issue only appeared when runningpuppetserver
from 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
selinux
fact is not properly detected by Facter 4. Facter 4 now takes the same approach as Facter 3 — checking for both the mountedselinux
filesystem and the configuration file. If either are absent, Facter does not fill in theselinux
fact. FACT-2994 -
Facter 4.0.52 does not return the
fqdn
fact. 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
hypervisor
facts differently on Amazon 7. This release changes the value ofhypervisor
facts from a boolean to a string, matching the behavior of Facter 3. FACT-3007 -
Facter 4 outputs
hypervisors.zone.id
facts differently on Solaris. This release changes the value of thehypervisors.zone.id
fact from a String to an Integer, matching the behavior of Facter 3. FACT-2987 -
Facter 4 outputs
mountpoints
facts differently on macOS. This release fixes differences in themountpoints.options
facts on macOS, matching the behavior of Facter 3. FACT-2984 -
Facter 4 outputs
mountpoints
facts differently on Solaris. This release fixes differences in themountpoints
fact 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
uptime
fact on Windows, matching the behavior of Facter 3. FACT-2966 -
Facter 4 outputs the
processors.speed
fact differently on AIX. This release fixes differences in theprocessors.speed
fact 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
xen
instead ofxenhvm
on Amazon Linux 6. FACT-2986 -
Facter 4 outputs the
hypervisors
fact differently on Amazon 7. This release fixes differences in thehypervisors
fact 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.value
API to resolve facts in a similar way to Facter 3 — loading thefact_name.rb
from 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
Date
andTime
as 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_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 Theos.distro
facts are now resolved without thelsb_release
on the following platforms: RHEL, Amazon, SLES. The information is read from the system in the same way. Note that theos.distro.specification
fact, which refers tolsb
version, is available only if thelsb_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 theip route show
command, 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.conf
from the default location when running on jRuby. FACT-2959 -
Facter 4 reports
lsbmajdistrelease
on Ubuntu differently from Facter 3. Previously, thelsbmajdistrelease
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 usingffi
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 whereFacter.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 callingFacter.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
andnano
.FACT-2962 -
The
Facter.conf
file does not accept singularttls
units. Previously, Facter failed if thettls
unit in thefacter.conf
file 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 -p
command is now supported. Thefacter -p
command 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
legacy
facts. 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::Execution
does not set status variables in Facter 4. This release reimplementsOpen3.popen3
to useProcess.wait
instead 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 wherelog10
is 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.release
fact was retrieved from the/etc/os-release
file, but Facter 3 read other release files based on operating system (OS). Now Facter retrievesos.release
from 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_*_size
facts not resolving on AIX, andblockdevice_*_vendor
facts 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-release
without checking or translating the information. This is now fixed and Facter translates theid_like
field from/etc/os-release
to Facter known families. FACT-2902
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 thescope6
fact under every ipv6 address from theinterface.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 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.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
andto_hash
Ruby Facter API's. The custom facts with nil value are still returned byvalue
,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 theis_virtual
to be a string instead of a boolean. FACT-2869 -
External facts are loaded when using
puppet lookup
for a different node. Theload_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 methodto_hash
returned a different data type to Facter 3. This release ensures theto_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 theVLANs.MAC
address 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
blocklist
fromfacter.conf
. FACT-2259 -
Block custom facts.
Facter 4 allows you to block custom facts. You
can add the fact to the
blocklist
fromfacter.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
blocklist
infacter.conf
. FACT-2717 -
The puppet facts show command. The
facter -p
andfacter --puppet
commands 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.rb
and can block it infacter.conf
. FACT-2296 -
The
fact-groups
group. You can define your own custom groups infacter.conf
using the newfact-groups
group. Theblocklist
andttls
groups fromfacter.conf
accept 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
ttls
infacter.conf
. FACT-2619
Enhancements
-
CLI compatible with Facter 3.
Facter 4 reimplemented the Facter 3 command line interface using
thor
gem. 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
--timing
option to native facter. The restored--timing
and-t
arguments 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
timeout
attribute in custom fact options. FACT-2643 -
Caching
core facts . To cache core facts, add the fact group to
facter.conf
ttls
. Fact values are stored and retrieved on future runs. After thettls
expires, 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
limit
attribute inFacter::Core::Execution.execute
. FACT-2793 -
Fact names are treated as
regex
and can lead to caching of unwanted facts. Theregex
used 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 attls
defined infacter.conf
, the lowestttls
is takes precedence. FACT-2786