backuity / puppet-module-installer   2.2.1

Apache License 2.0 GitHub

Installs puppet modules recursively

Scala versions: 2.11

puppet-module-installer Build Status

Installs puppet modules recursively from a Puppetfile.


Until proper packages (Deb, Rpm) exist you can install the puppet-module-installer by downloading it from Maven Central:

If you have binfmt-support installed you can simply give the executable permission to your jar:

wget -O ~/bin/puppet-module-installer
chmod u+x ~/bin/puppet-module-installer

If you don't have binfmt-support, you can create a bash script:


java -jar ~/bin/puppet-module-installer.jar "$@"

And download the jar next to it:

wget -O ~/bin/puppet-module-installer.jar


The tool provides the following options:

  • --help : print a detailed help message
  • --version : print the version

Go to a folder containing a Puppetfile and run puppet-module-installer, it will download recursively all the module described by the Puppetfile. You can inspect the graph of modules with the puppet-module-installer graph command, ex:

  ├ my-app(HEAD)
  │ ├ java(1.16.0)
  │ ├ jmxtrans(1.74.0)
  │ │ └ logrotate(1.0.0)
  │ │
  │ └ tomcat(2.23.0)
  │   ├ dynatrace(1.4.0)
  │   ├ introscope(3.4.0)
  │   ├ java(1.16.0)
  │   ├ jmxtrans(1.28.0)
  │   ├ nexus(1.10.0)
  │   ├ puppi(2.0.8)
  │   ├ ssl(1.76.0)
  │   └ stdlib(1.2.0)
  ├ motd(HEAD)
  └ sudo(HEAD)

Fetch mode

There are 5 different ways to retrieve the modules:

  • Normal : (no option) Stick to the versions found in the Puppetfile, when no version is found, HEAD is used.
  • Head : (--head) Use HEAD for all modules.
  • Latest : (--latest) Ask git for a list of tags choose the highest minor for the current major
  • Latest Forced : (--latest-force) Ask git for a list of tags and choose the highest
  • Latest Head : (--latest-head) Same as Latest unless HEAD is wanted


Given 2 puppet modules :

  • java whose repository git is ssh://repos/java.git with the following tags : v1.3, v2.5, v2.6, v3.2
  • nexus whose repository git is ssh://repos/nexus.git with the following tags : v1.10, v2.5

Give the following puppet file :

mod 'java',
  :git => 'ssh://repos/java.git',
  :ref => 'v2.5'
mod 'nexus',
  :git => 'ssh://repos/nexus.git'

Here are results of the different modes:

Mode Java Nexus
Normal v2.5 HEAD
Latest v2.6 v2.5
Latest forced v3.2 v2.5
Latest Head v2.6 HEAD

Puppetfile syntax

The syntax comes from Librarian Puppet.