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: http://repo1.maven.org/maven2/org/backuity/puppet-module-installer_2.11/2.2.1/puppet-module-installer_2.11-2.2.1-one-jar.jar
If you have binfmt-support installed you can simply give the executable permission to your jar:
wget http://repo1.maven.org/maven2/org/backuity/puppet-module-installer_2.11/2.2.1/puppet-module-installer_2.11-2.2.1-one-jar.jar -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:
#!/bin/bash
java -jar ~/bin/puppet-module-installer.jar "$@"
And download the jar next to it:
wget http://repo1.maven.org/maven2/org/backuity/puppet-module-installer_2.11/2.2.1/puppet-module-installer_2.11-2.2.1-one-jar.jar -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:
Puppetfile
├ 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)
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
Example
Given 2 puppet modules :
- java whose repository git is
ssh://repos/java.gitwith the following tags :v1.3, v2.5, v2.6, v3.2 - nexus whose repository git is
ssh://repos/nexus.gitwith 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 |
| Head | HEAD | HEAD |
| Latest | v2.6 | v2.5 |
| Latest forced | v3.2 | v2.5 |
| Latest Head | v2.6 | HEAD |
The syntax comes from Librarian Puppet.
