Facter3
Summary
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.
Owner
- Name: James Hogarth
- Email: jhogarth@fedoraproject.org
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:
https://docs.puppet.com/facter/3.0/release_notes.html
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:
https://copr.fedorainfracloud.org/coprs/jhogarth/facter3/
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.
Scope
- 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
- List of deliverables: N/A (not a System Wide Change)
- 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 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 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)
Dependencies
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
Documentation
The breaking changes occur at the 3.0 boundary:
https://docs.puppet.com/facter/3.0/release_notes.html
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.