Litmus

August 6, 2025 ยท View on GitHub

Code Owners ci Gem Version

litmus logo

Overview

Litmus is a command line tool that allows you to run acceptance tests against Puppet modules.

Litmus allows you to:

  • Provision targets to test against
  • Install a Puppet agent
  • Install a module
  • Run tests
  • Tear down the infrastructure

Litmus also facilitates parallel test runs and running tests in isolation. Each step is standalone, allowing other operations between test runs, such as debugging or configuration updates on the test targets.

Install Litmus as a gem by running gem install puppet_litmus.

  • Note if you choose to override the litmus_inventory.yaml location, please ensure that the directory structure you define exists.

Agent installs

Install a specific puppet agent version

To install a specific version of the puppet agent, you can export the PUPPET_VERSION env var, like below:

export PUPPET_VERSION=8.8.1

When set, the litmus:install_agent rake task will install the specified version. The default is latest.

Installing puppetcore agents

To install a puppetcore puppet agent through the litmus:install_agent rake task, you need to export your Forge API key as an env var, like below:

export PUPPET_FORGE_TOKEN='<your_forge_api_key>'

matrix_from_metadata_v3

matrix_from_metadata_v3 tool generates a github action matrix from the supported operating systems listed in the module's metadata.json.

How to use it: in the project module root directory run bundle exec matrix_from_metadata_v3

Optional arguments

argumentvaluedefaultdescription
--matrixFILEbuilt-inFile containing possible collections and provisioners
--metadataFILEmetadata.jsonFile containing module metadata json
--debugEnable debug messages
--quietDisable notice messages
--outputTYPEautoType of output to generate; auto, github or stdout
--runnerNAMEubuntu-latestDefault Github action runner
--puppet-includeMAJORSelect puppet major version
--puppet-excludeMAJORFilter puppet major version
--platform-includeREGEXSelect platform
--platform-excludeREGEXFilter platform
--arch-includeREGEXSelect architecture
--arch-excludeREGEXFilter architecture
--provision-preferNAMEdockerPrefer provisioner
--provision-includeNAMEallSelect provisioner
--provision-excludeNAMEprovision_serviceFilter provisioner
--nightlyInstall from the nightly puppetcore images
--latest-agentReturn the latest agent version as part of the matrix. Note: This changes how the collection is returned

Refer to the built-in matrix.json for a list of supported collection, provisioners, and platforms.

Examples

  • Only specific platforms
    matrix_from_metadata_v3 --platform-include redhat --platform-include 'ubuntu-(20|22).04'
    
  • Exclude platforms
    matrix_from_metadata_v3 --platform-exclude redhat-7 --platform-exclude ubuntu-18.04
    
  • Exclude architecture
    matrix_from_metadata_v3 --arch-exclude x86_64
    
  • Run against the nightly puppetcore images
    matrix_from_metadata_v3 --nightly
    

Documentation

For documentation, see our Litmus Docs Site.

License

This codebase is licensed under Apache 2.0. However, the open source dependencies included in this codebase might be subject to other software licenses such as AGPL, GPL2.0, and MIT.

Other Resources