Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


License Test codecov Release RubyGem Version RubyGem Downloads

Rake tasks related to R10K and Puppetfile.


Add the following line to your Gemfile:

gem 'ra10ke'

Add the following lines in your Rakefile:

require 'ra10ke'


You can configure the tasks in a block: do |t|
  t.basedir = File.join(Dir.pwd, 'some_dir')
  t.moduledir = File.join(Dir.pwd, 'some_dir/strange_module_dir')

Available settings are:

Setting Documentation
basedir Base directory with the Puppetfile and modules directory (Default: Same directory as Rakefile)
moduledir Directory to install the modules in (Default: 'modules' in basedir)
puppetfile_path Directroy where the Puppetfile is (Default: basedir)
puppetfile_name The Puppetfile name (Default: basedir/Puppetfile)
force Overwrite locally changed files on install (Default: false)
purge Purge unmanaged modules from the modulesdir (Default: false)

Rake tasks


Syntax check for the Puppetfile. Similar to the r10k puppetfile check command.


This rake task goes through the modules that are declared in the Puppetfile, and prints outdated modules.


  • Puppet Forge
  • Git (SHA-ref and Tagging)

Ignoring specific modules:

Under specific conditions you may not wish to report on specific modules being out of date, to ignore a module create .r10kignore file in the same directory as your Puppetfile.


This rake task will go through the puppetfile and convert forge based modules into git based modules using the modules't source repository and version tag.

This feature is useful when you want to bring all the forge modules into git source control. This assumes every module tags the release or provides a valid repo url. We recommend to manually review the output provided by this task before replacing the forge based content in your puppetfile as not every module author tagged a release or provided a working url.


Reads the Puppetfile in the current directory and uses the ruby 'solve' library to find missing and outdated dependencies based on their metadata.

The solver does not allow major version bumps according to SemVer by default. To allow major upgrades, call the rake task with any parameter.

The rake task will download git modules into the modules/ directory to access their metadata.json. It will also cache forge metadata in Μƒ$XDG_CACHE_DIR/ra10ke.metadata_cache in order to make subsequent runs faster.


Reads the Puppetfile in the current directory and installs them under the path provided as an argument.


  • It works only with modules from the Forge, and Git. SVN modules will be ignored.
  • Git support is explicitly SHA Ref and Tag supported. If tag is used it must follow v0.0.0 convention, other wise it will be ignored.
  • The version has to be specified explicitly. If it is omitted, or it is :latest, the module will be ignored.


The validate rake task will determine if the url is a valid url by connecting to the repository and verififying it actually exists and can be accessed. Additional if a branch, tag, or ref is specified in the Puppetfile the validate task will also verify that that branch/tag/ref exists in the remote repository.

If you have ever deployed r10k to production only to find out a tag or branch is missing this validate task will catch that issue.

A exit status of 0 is returned if there are no faults, while a 1 is returned if any module has a bad status.

Status emojis can be customized by setting the following environment variables.


  • GOOD_EMOJI='πŸ‘'
  • BAD_EMOJI='😨'
NAME     | URL                                           | REF                            | STATUS
splunk   |          | dev                            | πŸ‘
r10k     |             | v3.1.1                         | πŸ‘
gms      |       | gitlab_disable_ssl_verify_s... | πŸ‘
rbac     | | 2f60e1789a721ce83f8df061e13... | πŸ‘
acl      | | master                         | πŸ‘
deploy   |          | master                         | πŸ‘
dotfiles | | master                         | πŸ‘
gitlab   |         | 00397b86dfb3487d9df768cbd36... | πŸ‘

πŸ‘πŸ‘ Puppetfile looks good.πŸ‘πŸ‘


This rake task parses the Puppetfile and looks for modules with duplicate declarations.

All found duplicates are reported along with their source and their version (if taken from the Forge) or their ref/tag/branch. (if taken from git)


- abstractit/puppet from the forge at version 2.4.1
- theforeman/puppet from the forge at version 12.0.1
- puppet from git on the branch master at

- puppet/gitlab from the forge at version 4.0.1
- gitlab from git on the ref 00397b86dfb3487d9df768cbd3698d362132b5bf at

Error: Duplicates exist in the Puppetfile


This rake task checks all the Forge modules listed in the Puppetfile, looking for modules that are marked as deprecated on the Forge.


NAME                    | DEPRECATED_AT            
kemra102-auditd         | 2021-07-22 12:11:46      
puppet-staging          | 2018-12-18 11:11:29      
puppetlabs-resource_api | 2021-03-31 12:53:24      
puppetlabs-ruby         | 2021-04-22 10:29:42      
puppetlabs-translate    | 2021-03-19 10:11:51      

Error: Puppetfile contains deprecated modules.