Facter 3.1: Release notes
Included in Puppet Enterprise 2016.2. A newer version is available; see the version menu above for details.
This page documents the history of the Facter 3.1 series. If you’re upgrading from Facter 2, also review the Facter 3.0 release notes for important information about other breaking changes, new features, and changed functionality.
Released June 1, 2016.
Facter 3.1.8 is a bug fix release in the Facter 3.1 series.
FACT-1416: Previously, the
solaris_zonesfact was only displaying information about zones which were running. This was fixed, and that fact now includes information about all zones on the system, whether they are running or not.
FACT-1409: Previously, Facter assumed that an inability to initialize locales on common Linux environments was a catastrophic failure. It now continues with a warning.
FACT-1408: In Facter 3, the
productnamefact in Solaris was less detailed than its predecessor in Facter 2. The fact has been updated to use the
prtdiagcommand which restores the original level of detail.
Released May 17, 2016.
Facter 3.1.7 is a minor bug fix release in the Facter 3.1 series.
*FACT-1387: Google Cloud Windows instances are now recognized as virtual and will collect GCE metadata.
FACT-1375: Before this fix,
facter ipaddresscould return the address of the wrong network interface when there were routes for 0.0.0.0, with non-zero subnet mask, in addition to the default route. The correct ip address is the address of the interface associated with the interface on the route table entry for the default gateway.
FACT-1373: Previously, if Facter was called from an external fact it would generate endless recursive Facter calls and fork bomb the agent. In order to prevent this, we will now detect recursive calls to evaluate external facts, and if we encounter one we will log a warning and stop evaluating external facts.
To do this, we set an environment variable called
INSIDE_FACTERthe first time external facts are evaluated and check this variable before we evaluate external facts to ensure it hasn’t been set. It is possible that a user may have their own environment variable called
INSIDE_FACTERset to true, so anytime we encounter that variable set to true, we log a debug warning.
Released April 26, 2016.
Facter 3.1.6 is primarily a Windows bug fix release, however it also includes one improvement, and a few other miscellaneous bug fixes.
facter -h is the same as
For consistency with other command-line tools,
facter -h is now equivalent to
Bug fixes: Windows
Facter would not serialize large integers in structured facts
This fix corrects a bug in Facter preventing it from properly serializing integers exceeding the 32bit boundary.
Google Cloud instances not recognized as virtual
Google Cloud Windows instances are now recognized as virtual, and will collect GCE metadata.
Module level external facts not resolved when using Vagrant
Facter can now resolve external facts across NTFS reparse points.
Facter falsely reported OpenStack instances virtual as physical
Facter incorrectly reported OpenStack based Windows VMs as not virtual. This fix changes them to report as virtual, with the label ‘openstack’.
Bug fixes: Misc
Facter::Util::Resolution.exec not setting
$?.exitstatus based on exec result
Facter::Util::Resolution.exec will now set the Ruby
$? exit status variable.
Facter failed when locale files were missing for a specified locale on CentOS 7
An issue where Facter failed in some invalid locale environments with
failed to initialize logging system due to a locale error: Invalid or unsupported charset:ANSI_X3.4-1968 has been addressed; it should now always fall back to a C locale.
Released March 16, 2016.
Facter 3.1.5 is an improvement and bug fix release in the Facter 3.1 series.
Improvement: networking.ip fallback
Facter will now consider the ‘source’ attribute of routing table entries associated with an interface to be an additional address tied to that interface.
FIX: Windows extended characters
In Puppet with Facter 3, using Windows-1252 extended characters such as ö and æ in a user name on Windows would cause an exception to be thrown by Facter. This has been fixed.
Previously, Facter 3 YAML output would not quote some strings that YAML 1.1 and 1.2 allow interpreting as other types such as booleans, sexagesimal patterns, and comma-separated lists of integers. These will now be correctly quoted.
Released January 25, 2016.
Facter 3.1.4 is a platform packaging release in the Facter 3.1 series.
NEW PLATFORM: Ubuntu Wily 15.10
puppet-agent 1.3.4, packages are available for Ubuntu Wily 15.10.
Released November 30, 2015.
Facter 3.1.3 is a bug-fix release in the Facter 3.1 series.
REGRESSION FIX: Report
We didn’t report the
puppetversion fact when when we restored
facter -p functionality to Facter 3.0.2. This release restores the fact.
Released November 17, 2015.
Facter 3.1.2 is a bug-fix release in the Facter 3.1 series.
FIX: Correctly Report OS X Versions
Facter incorrectly omitted a “point release” part of the full version of major releases of OS X when the point release is “0”. For instance, Facter incorrectly reported major releases like “10.11.0” as “10.11”. This has been addressed so that Facter consistently reports the full version number even if the “point release” part of the version number is “0”.
FIX: Restore Missing Required File
The tarball for Facter 3.1.1 failed to include
.gemspec.in, which is required for building from source. This release includes the file.
FIX: Access Members of Custom Structured Facts
Facter supports a command-line syntax for querying structured facts. For example, “os.name” gets the “name” member of the hash fact “os”. However, in previous versions of Facter 3 this didn’t work with custom facts written in Ruby. This release fixes this behavior to work with all facts.
dmidecode on Older Linux
On older Linux kernels, Facter falls back to executing
dmidecode to retrieve certain built-in facts. Previous versions of Facter incorrectly used the system’s
dmidecode, if present, instead of the one that ships with Puppet Agent. This release corrects this behavior to use the version installed with Puppet Agent.
Released October 29, 2015.
Facter 3.1.1 fixes several bugs and adds functionality for AIX 5.3, 6.1, and 7.1, and Solaris 11.
New Platforms: AIX and Solaris 11
Facter 3.1.1 now reports facts on AIX 5.3, 6.1, and 7.1 on PowerPC, and Solaris 11 on x86 and SPARC. Note that there are no open source Puppet all-in-one packages for these platforms; for more information, see the
puppet-agent 1.2.7 release notes.
- FACT-890: Facter 3 AIX Support
serialnumberFact for AIX
operatingsystemmajreleaseHas Excessive Detail on AIX
- FACT-1232: AIX 5.3
REGRESSION FIX: Running
facter --puppet Produces Warning and Debug Messages
--puppet flag removed in Facter 3.0.0 was restored in Facter 3.0.2, but Facter’s warning and debug messages were not logged when running it with that flag. Facter 3.1.1 resolves this issue.
Improvement: Reduced Filesystem Activity
Previous versions of Facter 3 would sometimes create and delete cache files it didn’t use when probing for block devices via the
libblkid library, resulting in unnecessary hits for users that audit file system interactions. Facter 3.1.1 now bypasses this cache and probes the system for block devices.
FIX: Correctly Handle Negative Integers
When invoking Facter on the command line to display a custom fact with a negative integer value, previous versions of Facter 3 would incorrectly print the number as a large unsigned value. This only affected command-line output in Facter; the fact’s value was still being reported correctly to Puppet. Facter 3.1.1 correctly prints the signed value on the command line.
REGRESSION FIX: Respect Long-form Hostnames to Populate Related facts
Previous versions of Facter 3 did not respect fully-qualified system hostnames, sometimes resulting in an incorrect resolution of the system’s domain for the
fqdn facts. This is a regression from Facter 2, which respected fully-qualified hostnames. Facter 3.1.1 resolves this issue.
FIX: Gracefully Handle Unresolved Requests for Certain Windows DMI Facts
Previous versions of Facter 3 would halt if Windows Management Instrumentation (WMI) failed to resolve the Win32_ComputerSystemProduct’s
Name, or Win32_Bios’s
Manufacturer. If Facter 3.1.1 encounters this, it fails to resolve only those DMI facts and doesn’t prematurely halt its fact collection run.
Released September 14, 2015.
Facter 3.1.0 fixes several bugs and introduces support for OpenBSD and Solaris 10.
For JIRA issues related to Facter 3.1.0, see:
New Platforms: OpenBSD and Solaris 10
Facter 3.1.0 supports OpenBSD, as well as Solaris 10 on both x86 and SPARC systems.
Facter 3.1.0 also reports Solaris-specific LDom facts previously supported by Facter 2 and includes the new
ldom mapped fact.
Feature: Improve Cisco NX-OS
release Fact Reporting
Facter 3.1.0 adds support for reporting a NX-OS guestshell’s native family in the
family fact, and its minor release in the
Feature: Networking Fact Includes Address Bindings
networking fact now includes arrays of bound addresses for each network interface (as
REGRESSION FIX: Improve Handling of Non-Printable ASCII Characters in Disk UUIDs
Facter 3.0.2 did not properly encode non-printable ASCII data in
libblkid output on Linux, resulting in invalid UTF-8 code sequence errors when handled in Puppet. Facter 3.1.0 resolves this issue.
FIX: Improve Handling of Invalid Locales
When running Facter 3 with an invalid locale setting, Facter would abort with an unhelpful error message. Facter 3.1.0 resolves this issue by falling back to the “C” locale if the LANG or LC-related environment variables are not set to a supported locale.
FIX: Improve Handling of Invalid Bytes in DMI Data
When interpreting BIOS data containing non-printable bytes, previous versions of Facter produced invalid character sequences. Facter 3.1.0 resolves this issue by replacing invalid characters with a dot (
REGRESSION FIX: Restore Docker support for
In Docker containers run on systemd-based Linux hosts, such as CentOS 7, previous versions of Facter might be unable to accurately report the
is_virtual facts. Facter 3.1.0 resolves this issue.
REGRESSION FIX: Fix
productname Fact Reporting on CentOS 5
Facter 3.0.0 incorrectly reported the
productname fact on CentOS 5 with Linux kernels before version 2.6.23. Facter 3.1.0 resolves this issue.
REGRESSION FIX: Fix
partitions Fact Reporting on CentOS 4 and 5, SLES 10
Facter 3.0.0 could not report the
partitions fact on CentOS 4 and 5, and SUSE Linux Enterprise Server 10. Facter 3.1.0 resolves this issue.
REGRESSION FIX: Remove Trailing Dot from
Facter 3.0.0 reintroduced a previously fixed bug that included the trailing dot (
.) in a search path from
/etc/hosts doesn’t contain an entry for the local host. Facter 3.1.0 resolves this issue.
REGRESSION FIX: Resolve Intermittent “Failed to Associate Process with Job Object” Errors on Windows
When running Facter 3.0 on Windows in job groups that prohibit detaching child processes, it could fail with an error when trying to attach a child process to its own job group. Facter 3.1.0 resolves this issue.
REGRESSION FIX: Fix Space Handling in Facter Execute Methods on Windows
When expanding commands passed to Facter execute methods, such as
Facter::Util::Resolution#exec, Facter 3 did not properly handle spaces on Windows. Facter 3.1.0 resolves this issue.
REGRESSION FIX: Restore Colored Output on Windows
Facter 3.0.0 did not support colored output on Windows. Facter 3.1.0 resolves this issue.
FIX: Improve Resource Use when Requesting Facts from the Ruby API
When requesting a fact from the Ruby API, Facter converts the native representation of the fact’s value to a Ruby object. This conversion should be cached so that subsequent requests for the same fact use the cached conversion. However, a bug prevented caching and a new object was allocated on each request, causing needless garbage for Ruby’s garbage collector. Facter 3.1.0 resolves this issue.
REGRESSION FIX: Avoid Reporting Link-Local IPv6 Addresses if a Valid Address is Available
When reporting the
networking fact, Facter 3.0.0 would report the link-local (scope:link) IPv6 address as the interface’s address, even if it has a valid (scope:global) address. Facter 3.1.0 resolves this issue by always reporting the scope:global address if it exists.
FIX: Report Logical Threads on AIX
Facter 3.0.0 would report only physical processor cores on AIX systems. On other operating systems, Facter reports physical cores and logical threads. Facter 3.1.0 resolves this issue by reporting both cores and threads on AIX systems.
Note that Facter 3.1.0 doesn’t yet have full AIX support.
Feature: Added ‘noatime’ Option to
Facter now reports the ‘noatime’ option in the
mountpoints fact when it is set for a filesystem.
REGRESSION FIX: Create
puppet-agent package that installs Facter 3.0.0 did not create the
rubysitedir pointed to by the
rubysitedir fact. The
puppet-agent 1.2.4 update resolves this issue.