Faster module tests with Facter 4 and rspec-puppet

This page summarizes the projects mentioned and recommended in the original post on dev.to

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. facter

    Collect and display system facts

    The latest major version of Facter—Puppet's tool for collecting system information—has been out for some time now. However, we've been hard at work fixing bugs ever since. The fact that Facter has to be able to run on a variety of operating systems and architectures makes maintenance quite a challenging ordeal.

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. facterdb

    A Database of OS facts provided by Facter

    For each test, rspec-puppet stubs the fake facts using the custom facts API. The fake facts it gets from facterdb, which is a gem that contains "dummy" facts for a variety of operating systems and Facter versions—basically lots of files containing facter --json output. The resulting information is then fed to Puppet for catalog compilation.

  4. Puppet

    Server automation framework and application

    We started by decoupling Puppet from Facter as much as we could, introducing the possibility of having multiple Facter backends. While Puppet would use the default Facter implementation when running on its own, external users would be able to define and pass their own Facter implementation when initializing Puppet, similar to how puppetserver configures Puppet to use its JRuby-compliant HTTP client.

  5. rspec-puppet

    RSpec tests for your Puppet manifests

    To avoid breaking the Facter API, we ended up implementing an overcomplicated way of interacting with a hash. Using our dumb Facter backend, custom facts were now simply added to a hash, and querying them would just produce them from the hash if available:

  6. kmo-501-nginx

    Discontinued A mock nginx module for training

    And because performance improvements mean nothing without showing the numbers, here's how test times have changed for the puppet-nginx module:

  7. puppet-nginx

    Puppet Module to manage NGINX on various UNIXes (by GabrielNagy)

    One thing I haven't mentioned is that running the same tests with Puppet 6 takes a total of 25 minutes, so there's more to improve in Puppet itself as well. However, from a Facter standpoint it's impossible to make the tests any faster, unless Ruby itself improves hash access speed 😜.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • S5cmd: Parallel S3 and local filesystem execution tool

    2 projects | news.ycombinator.com | 11 Jun 2025
  • First Kubernetes Deployment with Minikube

    1 project | dev.to | 10 Jun 2025
  • We Reduced the Impact of Zombie Clients

    1 project | news.ycombinator.com | 5 Jun 2025
  • Why Golang Is Such a Powerful Language

    4 projects | dev.to | 2 Jun 2025
  • Vibe Coding an MCP Server (with ToolHive)

    3 projects | dev.to | 30 May 2025

Did you know that Ruby is
the 12th most popular programming language
based on number of references?