Skip to content

treydock/facter

This branch is 18 commits behind puppetlabs/facter:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b1a234c · Sep 24, 2024
Sep 6, 2024
Aug 19, 2024
Jan 8, 2024
Feb 3, 2021
Dec 11, 2023
Mar 6, 2024
Oct 10, 2019
Sep 24, 2024
Mar 16, 2024
Jan 8, 2024
Sep 24, 2024
May 23, 2024
Nov 18, 2023
Nov 25, 2020
Aug 9, 2019
Apr 28, 2020
Jun 24, 2024
Apr 12, 2024
Aug 9, 2019
Jun 17, 2021
Jan 21, 2022
Aug 14, 2024
Apr 7, 2021
Apr 25, 2024
Jul 6, 2021
Mar 6, 2024
May 24, 2024
Feb 22, 2021
Sep 4, 2024
Mar 6, 2024

Repository files navigation

facter

Gem Version

Modules Status Modules Status Modules Status Test Coverage Maintainability

Facter is a command-line tool that gathers basic facts about nodes (systems) such as hardware details, network settings, OS type and version, and more. These facts are made available as variables in your Puppet manifests and can be used to inform conditional expressions in Puppet.

Documentation

Documentation for the Facter project can be found on the Puppet Docs site.

Supported platforms

  • Linux
  • macOS
  • Windows
  • Solaris
  • AIX

Requirements

  • Ruby 2.5+
  • FFI (for facts like mountpoints which are resolved using C API calls)

Basic concepts

The project has three main parts, the framework, facts and resolvers. In the framework we implement functionality that is agnostic of specific facts like parsing user input, formatting output, etc.

Facts are the nuggets of information that will be provided by facter e.g. os.name, networking.interfaces, etc.

Resolvers have the role of gathering data from the system. For example a resolver can execute a command on the system, can read a file or any operation that retrieves some data from a single source on the system.

Loading
sequenceDiagram
    participant user
    participant framework
    participant fact
    participant resolver
    user->>framework: user query
    framework->>fact: create
    fact->>resolver: resolve
    resolver->>fact: system information
    fact->>framework: fact value
    framework->>user: formatted user output

Getting started

After cloning the project, run bundle install to install all dependencies.

You can run facter by executing ./bin/facter. The command will output all the facts that facter detected for the current OS.

The implementation can be validated locally by running bundle exec rake check.

Goals - fast, easy, compatible

  • Gain performance similar to the C++ version of Facter. We plan to achieve this goal by gathering multiple facts with only one call and by using the faster Win32 API rather than WMI for the Windows implementation.
  • Facilitate community contribution. At the moment, C++ presents a possible impediment for community contributions.
  • Enable native integration with other Ruby-based projects such as Bolt and puppet.
  • Enable native integration for custom facts.
  • Provide 100% compatibility with C++ Facter (drop-in replacement).

Licensing

See LICENSE file. Puppet is licensed by Puppet, Inc. under the Apache license. Puppet, Inc. can be contacted at: info@puppet.com

Packages

No packages published

Languages

  • Ruby 90.6%
  • C 9.0%
  • Shell 0.4%