From Fedora Project Wiki



This is an update of the Facter package from 2.X to 3.X. It is a self contained changed which will impact puppet directly and potentially any other tools that make use of facter to gather information.


  • Email:

Release notes ticket: #75

Current status

Detailed Description

In the effort to remove the dependencies on the deprecated net-tools package Facter needs to be updated past the 3.0+ release.

The version presently in Fedora is 2.4.3, with 2.5.1 upstream as the most recent in the 2.X series. This is an update with breaking changes as detailed upstream here:

The most significant change though is a switch of language from ruby to c++, with bindings for application like puppet to remain compatible.

There is a COPR to carry out early testing here:

Benefit to Fedora

This allows us to remove one of the major dependencies on net-tools and brings a package that has been forgotten for a few years to be brought back up to the current release.


  • Proposal owners:

The following packages need to be reviewed as dependancies:

  • boost-nowide
  • leatherman
  • cpp-hocon

The leatherman package is already under review, the other two I'll be submitting for review in due course.

The only package showing a requirement on facter is puppet, that will need a change of it's requires to use ruby-facter instead of facter.

The release notes will need to include this to notify anyone using facter as a ruby library will need to change what package they install.

  • Other developers: N/A (not a System Wide Change)
  • Release engineering: #7090
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

Updates will follow the facter command rather than the ruby bindings. If someone needs the ruby bindings specifically for their scripts they will need to install them after the update.

How To Test

On Fedora 26 or Fedora 27:

dnf copr enable jhogarth/facter3
dnf install facter
dnf install puppet ruby-facter
puppet facts  --terminus facter
dnf install ansible
ansible -m setup localhost

On Rawhide (or Fedora 28 after next branch):

dnf install facter
dnf install puppet ruby-facter
puppet facts  --terminus facter
dnf install ansible
ansible -m setup localhost

User Experience

N/A (not a System Wide Change)


The puppet package will need to update the requires in its spec to depend on the ruby bindings specifically.

Contingency Plan

Bump the epoch of the facter2 package which will remain in F26/F27 and retarget this to F29.

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? No
  • Blocks product? No


The breaking changes occur at the 3.0 boundary:

Release Notes

If using any ruby application or script that makes use of the facter library it will be necessary to install the ruby-facter package to install the ruby bindings.

If calling facter directly as a command then no changes should be required, eg ansible, but users should check the facter release notes upstream for any changes in facts gathered.