Installing and managing modules from the command line
Install, upgrade, and uninstall Forge modules from the command line with the puppet module
command.
The puppet
module
command provides an interface for managing modules from the Forge. Its interface is similar to other common package
managers, such as gem
,
apt-get
, or yum
. You can install, upgrade,
uninstall, list, and search for modules with this command.
puppet module
command. With code management, you must install
modules with a Puppetfile. Code management purges modules
that were installed with the puppet module
command. See the Puppetfile documentation for
instructions.Setting up puppet module
behind a proxy
To use the puppet module
command behind a proxy, set the
proxy's IP address and port by running the following two commands:
export http_proxy=http://<PROXY IP>:<PROXY PORT>
export https_proxy=http://<PROXY IP>:<PROXY PORT>
export http_proxy=http://192.168.0.10:8080
export https_proxy=http://192.168.0.10:8080
Alternatively, you can set these
two proxy settings in the puppet.conf
file, by setting
http_proxy_host
and http_proxy_port
in the user
section of
puppet.conf
. For more information, see the Puppetconfiguration reference.[user
] section of the puppet.conf
file.
Setting them in other sections can cause problems.Finding Forge modules
The Forge houses thousands of modules, which you can find on the Forge website or by searching on the command line.
The easiest way to search for or browse modules is on the Forge website. Each module on the Forge has its own page with the module's quality score,
community rating, and documentation. Alternatively, you can search for modules on the
command line with the puppet module
search
command.
Some modules are Puppet supported or Puppet approved. Approved modules are often developed by Puppet community members and pass our specific quality and usability requirements. We recommend these modules, but they are not supported as part of a Puppet Enterprise license agreement. Puppet supported modules have been tested with PE and are fully supported. To learn more, see the Puppet approved and Puppet supported pages.
If there are no supported or approved modules that meet your needs, evaluate available modules by compatibility, documentation, last release date, number of downloads, and the module's Forge quality score.
Searching modules from the command line
The puppet module search
command accepts a single search term and
returns a list of modules whose names, descriptions, or keywords match the search
term.
puppet module search apache
returns
results such
as:Searching http://forge.puppetlabs.com ...
NAME DESCRIPTION AUTHOR KEYWORDS
puppetlabs-apache This is a generic ... @puppetlabs apache web
puppetlabs-passenger Module to manage P... @puppetlabs apache
DavidSchmitt-apache Manages apache, mo... @DavidSchmitt apache
jamtur01-httpauth Puppet HTTP Authen... @jamtur01 apache
jamtur01-apachemodules Puppet Apache Modu... @jamtur01 apache
adobe-hadoop Puppet module to d... @adobe apache
Finding and downloading deleted modules
You can still search for and download a specific release of a module on the Forge, even if the release has been deleted.
Normally, deleted modules do not appear in Forge search results. To include deleted modules in your search on the Forge website, check Include deleted modules in the search filter panel.
To download a deleted release of a specific module, select the
release from the Select another
release drop-down list on the module's page. The release is marked in
this menu as deleted. If you select the deleted release, a warning banner appears on the
page with the reason for deletion. To download the deleted release anyway, click
Download or install it
with the puppet module
install
command.
Installing modules from the command line
The puppet module install
command installs a module and
all of its dependencies. You can install modules from the Forge, a module repository, or a release
tarball.
$codedir/environments/production/modules
. For example, to
install the puppetlabs-apache
module,
run:puppet module install puppetlabs-apache
You can customize the module version, installation directory,
or environment, get debugging information, or ignore dependencies by passing
options with the puppet module install
command.
Warning: module (/Users/youtheuser/.puppet/modules/module) has an invalid
version number (0.1). The version has been set to 0.0.0. If you are the maintainer for this module, please update the
metadata.json with a valid Semantic Version (http://semver.org).
Despite
the warning, Puppet still downloads
your module and does not permanently change the module's metadata.
The version is changed only in memory during the run of the program,
so that Puppet can calculate
dependencies.Installing modules from the Forge
puppet module install
command
with the long name of the module. The long name of a module is
formatted as <username>-<modulename>
. For example,
to install puppetlabs-apache
, run: puppet module install puppetlabs-apache
puppet module install
command
, you'll get an error
like: Error: Could not connect via HTTPS to https://forgeapi.puppetlabs.com
Unable to verify the SSL certificate
The certificate may not be signed by a valid CA
The CA bundle included with OpenSSL may not be valid or up to date
This
error occurs because there is no CA-cert bundle on Solaris 10 to trust the
Forge certificate. To
work around this issue, download the module from the Forge website, and then
install the module tarball with the puppet module install
command, as
described in the topic about installing from a release
tarball.Installing from another module repository
You can install modules from other repositories that mimic the Forge interface. You can change the module repository for one installation, or you can change your default repository.
--module_repository
option. For
example:
puppet module install --module_repository http://dev-forge.example.com puppetlabs-apache
To
change the default module repository, edit the module_repository
setting in the
puppet.conf
to the base URL
of the repository you want to use. The default value for the module_repository
is the Forge URL, https://forgeapi.puppetlabs.com
. See the module_repository
setting in the
puppet.conf
configuration documentation.Installing from a release tarball
To install a module from a release tarball, specify the path to the tarball instead of the module name.
--ignore-dependencies
option and
manually install any dependencies. For
example:puppet module install ~/puppetlabs-apache-0.10.0.tar.gz --ignore-dependencies
Installing and upgrading Puppet Enterprise-only modules
Some Puppet modules are available only to PE users. Generally, you manage these modules in the same way you would manage other modules. You can use these modules with licensed PE nodes, a PE 10-node trial license, or with Bolt for a limited evaluation period. See your module's license for complete details.
Install modules on nodes without internet
To manually install a module on a node with no internet, download the module on a connected machine, and then move a module package to the unconnected node. If the module is a PE-only module, the download machine must have a valid PE license.
Make sure you have PDK installed. You'll use PDK to build a module package that you can move to your unconnected node. For installation instructions, see the PDK install docs.
Upgrading modules
To upgrade a module to a newer version, use the puppet module upgrade
command.
This command upgrades modules to the most recent released version of the module. This includes upgrading the module to the most recent major version.
puppet module upgrade puppetlabs-apache
--version
option.
For example, to upgrade puppetlabs-apache
version 2.2.0 without any breaking changes, specify the
2.x release to upgrade
to:puppet module upgrade puppetlabs-apache --version 2.3.1
You can also ignore changes or dependencies when upgrading with
command line options. See the puppet module
command reference for a complete list of options.
Uninstalling modules
Completely remove installed modules with the puppet module uninstall
command.
puppet.conf
file. To
remove a module, run the uninstall command with the full name of the module. For
example:
puppet module uninstall puppetlabs-apache
By default, the command exits and returns an error if you try to uninstall a module that other modules depend on or if the module's files have been modified after it was installed. You can forcibly uninstall dependencies or changed modules with command line options.
puppet module uninstall --force
See
the puppet module
command reference for a complete list of options.
puppet module
command
reference
The puppet module command manages modules with several actions and options.
puppet module
actions
Solaris Note: To use puppet
module
commands on Solaris systems, you must
first install gtar
.
Action | Description | Arguments | Example |
---|---|---|---|
build
|
Deprecated. Prepares a local module for release on the Forge by building a ready-to-upload archive file. Will be removed in a future release; use Puppet Development Kit instead. | A valid directory path to a module. |
puppet module build modules/apache
|
changes
|
Compares the files on disk to the md5 checksums and returns an array of paths of modified files. | A valid directory path to a module. |
puppet module changes /etc/code/modules/stdlib
|
install
|
Installs a module. | The full name <username-module_name > of
the module to uninstall. |
|
list
|
Lists the modules installed in the modulepath specified in the [main] block in the puppet.conf file. |
None. |
puppet module list
|
search
|
Searches the Forge for modules matching search values. | A single search term. |
puppet module search apache
|
uninstall
|
Uninstalls a module. | The full name <username-module_name > of
the module to uninstall. |
puppet module uninstall puppetlabs-apache
|
upgrade
|
Upgrades a module to the most recent release or to the specified version. Does not upgrade dependencies. | The full name <username-module_name > of
the module to upgrade. |
puppet module upgrade puppetlabs-apache --version
0.0.3
|
puppet module install
action
Installs a module from the Forge or another specified release archive.
puppet module install [--debug] [--environment] [--force | -f] [--ignore-dependencies]
[--module_repository <REPOSITORY_URL>] [--strict-semver]
[--target-dir <DIRECTORY/PATH> | -i <DIRECTORY/PATH>] [--version <x.x.x> | -v <x.x.x>]
<full_module_name>
For example:puppet module install --environment testing --ignore-dependencies
--version 1.0.0-pre1 --strict-semver false puppetlabs-apache
Option | Description | Value | Default |
---|---|---|---|
--debug , -d
|
Displays additional information about what the puppet
module command is doing. |
None. | If not specified, additional information is not displayed. |
--environment
|
Installs the module into the specified environment. | An environment name. | By default, installs the module into the default environment specified in the
puppet.conf file. |
--force , -f
|
Installs the module regardless of dependency tree, checksum changes, or whether the module is already installed. By default, installs the module in the default modulepath, even if the module is already installed in another directory. Does not install dependencies. | None. | If not specified, puppet module install exits
and returns information if it encounters installation errors or conflicts.
|
--ignore-dependencies
|
Does not install any modules required by this module. | None. | If not specified, the puppet module install
action installs the module and its dependencies. |
--module_repository
|
Specifies a module repository. | A valid URL for a module repository. | If not specified, installs modules from the module repository specified in
from the puppet.conf file. By default, this is the
URL for the Forge. |
--strict-semver
|
Whether to exclude pre-release versions. A value of false allows installation of pre-release versions. |
true , false
|
Defaults to true , excluding pre-release
versions. |
--target-dir , -i
|
Specifies a directory to install modules. | A valid directory path. | By default, installs modules into $codedir/environments/production/modules
|
--version , -v
|
Specifies the module version to install. | A semantic version number, such as 1.2.1 or a string specifying a requirement, such as ">=1.0.3". | If not specified, installs the most recent version available on the Forge. |
puppet module list
action
Lists the Puppet modules installed in the modulepath
specified in the puppet.conf
file's [main]
block. Use the --modulepath
option to
change which directories are scanned.
puppet module list [--tree] [--strict-semver]
For example:puppet module list --tree --modulepath etc/testing/modules
Option | Description | Value | Default |
---|---|---|---|
--modulepath
|
Specifies another modulepath to scan for modules. | A valid directory path. | By default, scans the default modulepath from the [main] block in the puppet.conf file.
|
--strict-semver
|
Whether to exclude pre-release versions. A value of false allows uninstallation of pre-release versions. |
true , false
|
Defaults to true , excluding pre-release
versions. |
--tree
|
Displays the module list as a tree showing dependencies. | None. | By default, puppet module list lists
installed modules but does not show dependency relationships. |
puppet module uninstall
action
Uninstalls a module from the default modulepath.
puppet module uninstall [--force | -f] [--ignore-changes | -c] [--strict-semver] [--version=] <full_module_name>
For example:puppet module uninstall --ignore-changes --version 0.0.2 puppetlabs-apache
Option | Description | Value | Default |
---|---|---|---|
--force , -f
|
Uninstalls the module regardless of dependency tree or checksum changes. | None. | By default, puppet module uninstall exits and
returns an error if it encounters changes, namespace errors, or dependencies.
|
--ignore-changes
|
Does not use the checksum and uninstalls regardless of modified files. | None. | By default, if the puppet module uninstall
action finds modified files in the module, it exits and returns an error. |
--strict-semver
|
Whether to exclude pre-release versions. A value of false allows uninstallation of pre-release versions. |
true , false
|
Defaults to true , excluding pre-release
versions. |
--version , -v
|
Specifies the module version to uninstall. | A semantic version number, such as 1.2.1 or a string specifying a requirement, such as ">=1.0.3".. | By default, puppet module uninstall
uninstalls the version installed in the modulepath. |
puppet module upgrade
action
This command upgrades modules to the most recent released version of the module. This includes upgrades to the most recent major version.
puppet module upgrade [--force | -f] [--ignore-changes | -c] [--ignore-dependencies]
[--strict-semver] [--version=] <full_module_name>
For
example:puppet module upgrade --force --version 2.1.2 puppetlabs-apache
Option | Description | Value | Default |
---|---|---|---|
--force , -f
|
Upgrades the module regardless of dependency tree or checksum changes. | None. | By default, puppet module upgrade exits and
returns an error if it encounters changes, namespace errors, or dependencies.
|
--ignore-changes
|
Does not use the checksum and upgrades regardless of modified files. | None. | By default, if the puppet module upgrade
action finds modified files in the module, it exits and returns an error. |
--ignore-dependencies
|
Does not attempt to install any missing modules required by this module. | None. | If not specified, the puppet module upgrade
action installs missing module dependencies. |
--strict-semver
|
Whether version ranges must exclude pre-release versions. |
true , false
|
Defaults to true , excluding pre-release
versions. |
--version , -v
|
Specifies the module version to uninstall. | A semantic version number, such as 1.2.1 or a string specifying a requirement, such as ">=1.0.3". | By default, puppet module uninstall
uninstalls the version installed in the modulepath. |
PE-only module troubleshooting
If you get an error when installing a PE-only module, check for common issues.
Error: Request to Puppet Forge failed.
The server being queried was https://forgeapi.puppetlabs.com/v3/releases?module=puppetlabs-f5&module_groups=base+pe_only
The HTTP response we received was '403 Forbidden'
The message we received said 'You must have a valid Puppet Enterprise license on this
node in order to download puppetlabs-f5. If you have a Puppet Enterprise license,
please see https://docs.puppetlabs.com/pe/latest/modules_installing.html#puppet-enterprise-modules
for more information.'
If you aren't a PE user, you won't be able to use this module unless you purchase a PE license. If you are a PE user, check the following:
Are you logged in as the root user? If not, log in as root and try again.
Does the node you're on have a valid PE license? If not, switch to a node that has a valid license on it.
Are you running a version of PE that supports this module? If not, you might need to upgrade.
Does the node you are installing on have access to the internet? If not, switch to a node that has access to the internet.