PDK command reference
PDK commands accept arguments and options to customize behavior.
On this page
pdk build command
Builds a module package that can be published on the Forge.
Usage:
Within the module directory:
pdk build [--target-dir=<PATH>] [--force]
For example:
pdk build --target-dir=mymodules/my_module/pkg
To learn more, see building module packages. For step-by-step instructions, see the build a module topic.
Argument | Description | Values | Default |
---|---|---|---|
--force
|
Skips the prompts and builds the module package. Overwrites any existing package, if one exists. | None. | By default, prompts are enabled. |
--target-dir=<PATH>
|
The target directory where you want PDK to write the package. | A directory path. | Defaults to pkg directory in the
module. |
pdk get config command
Retrieves the resolved user configuration for PDK, including all available layers of configuration.
Usage:
pdk get config <key>
For example: pdk config get user.module_defaults.author
Argument | Description | Value | Default |
---|---|---|---|
<key>
|
The name, or name prefix, of the setting key to retrieve. Raises an error if the setting does not exist. |
The full name of the setting, such as |
If no <key> is passed, the command returns all
configuration keys that it finds. |
pdk remove config command
Unsets one or more values from the given configuration key.
Usage:
pdk remove config <key> <value>
To unset all values for a given key:
pdk remove config [--all] <key>
Argument | Description | Value | Default |
---|---|---|---|
<key>
|
Required. The configuration key to delete values for. |
The full name of the setting, such as |
No default. The <key> is
required. |
<value>
|
Required. The value to delete for the specified key. To delete
all values, use the --all option
instead of specifying values. |
One or more specified values for the given configuration key. | No default. Either a <value>
or the --all option is required for
normal usage. |
--all
|
Empties all values for the given key. | None. | When this option is passed, empties all values for the specified key. |
pdk set config command
Sets, updates, or adds to the values in the given configuration key and outputs the new values.
Usage:
pdk set config [--type|--as <typename>] [--force] <key> [<value>]
For example: pdk set config --type boolean user.module_defaults.author john_doe
Argument | Description | Value | Default |
---|---|---|---|
<key>
|
Required. The configuration key to set, change, or add values for. |
The full name of the setting, such as |
No default. The <key> is
required. |
<value>
|
Required. The value to set for the specified key. | One or more valid values for the specified <key>. | No default. One or more values are required. |
–-add
|
Treats a user-defined configuration key as a multi-value key. | None. | This option treats the value as a list of values. |
--force
|
Runs the command, making literal changes without prompting for confirmation. | None. | By default, prompts are enabled. |
|
Specifies what type the value should be. Useful if the type
cannot be inferred from the <key> . |
Accepts values common to JSON and YAML:
|
By default, if the type cannot be inferred, values are treated as strings. |
pdk convert command
Converts an existing module to a standardized PDK module with an infrastructure for testing.
Usage:
Within the module directory:
pdk convert [--noop] [--force][--template-url=<GIT_URL>] [--skip-interview] [--full-interview]
For example:
pdk convert --template-url=https://github.com/puppetlabs/pdk-templates --skip-interview
To learn more, see converting modules. For step-by-step instructions, see the convert a module topic.
Option | Description | Value | Default |
---|---|---|---|
--add-tests
|
Adds basic unit test templates for existing classes and defined types that do not have any tests. | None. | If not specified, unit test templates are not added. |
--default-template
|
Converts a module to the default PDK template. |
None. | If not specified, converts to default template unless you have specified a custom template. |
--force
|
Runs the command, making changes without prompting for confirmation. This option manipulates files and is potentially destructive. Always back up your work before using this option. | None. | If not specified, the command prompts for confirmation. |
--full-interview
|
Include interview questions related to publishing on the Forge to create module metadata. | None. | If not specified, asks only basic module metadata questions. |
--noop
|
Runs the command in a no operation or "no-op" mode. This shows what changes PDK will make without actually executing the changes. | None. | If not specified, the command makes the requested changes. |
--skip-interview
|
Skip interview questions and use default values to create module metadata. | None. | If not specified, asks basic module metadata questions. |
--template-ref=<VALUE>
|
Specifies the reference to use for the specified template for
this module. This option is valid only if you have specified a
template with the |
A template branch name, tag name, or commit SHA for the specified template. |
If you have specified a custom template, or if you installed PDK as a gem, this option defaults to
main . Otherwise, defaults to the defaults of the currently
installed PDK version. |
--template-url=<GIT_URL>
|
Specifies a template to use for this module. | A valid Git URL or a path to a local template. | A valid Git URL or a path to a local template. |
pdk new class command
Generates a new class and test templates for it in the current module.
Usage:
Within the module directory:
pdk new class [--template-url=<GIT_URL>] <class_name>
For example: pdk new class my_class
For step-by-step instructions, see the create a class topic.
Argument | Description | Value | Default |
---|---|---|---|
<class_name>
|
Required. The name of the class to generate. | A class name beginning with a lowercase letter and including only lowercase letters, digits, and underscores. | No default. |
--template-url=<GIT_URL>
|
Specifies the template to use when generating this class. | A valid Git URL or a path to a local template. | Uses the same template that was used to generate the module. If
that template is not available, defaults to pdk-template |
pdk new defined_type command
Generates a new defined type and test templates for it in the current module.
Usage:
Within the module directory:
pdk new defined_type [--template-url=<GIT_URL>] <defined_type_name>
For example: pdk new defined_type my_defined_type
For step-by-step instructions, see create a defined type topic.
Argument | Description | Value | Default |
---|---|---|---|
<defined_type_name>
|
Required. The name of the defined type to generate. | A defined type name beginning with a lowercase letter and including only lowercase letters, digits, and underscores. | No default. |
--template-url=<GIT_URL>
|
Specifies the template to use when generating this defined type. | A valid Git URL or path to a local template. | Uses the same template that was used to generate the module.
If that template is not available, defaults to pdk-templates . |
pdk new fact command
Generates a new custom fact with a given name using given options
Usage:
Within the module directory:
pdk new fact <fact_name>
For example: pdk new fact my_fact
Argument | Description | Value | Default |
---|---|---|---|
<fact_name>
|
Required. The name of the fact to generate. | A fact name beginning with a lowercase letter and including only lowercase letters, digits, and underscores. | No default. |
pdk new function command
Generates a new function with a given name using given options
Usage:
Within the module directory:
pdk new function [--type=<value>] <function_name>
For example: pdk new function my_func
Argument | Description | Value | Default |
---|---|---|---|
<function_name>
|
Required. The name of the function to generate. | A function name beginning with a lowercase letter and including only lowercase letters, digits, and underscores. | No default. |
--type=<value>
|
Specifies the type of function to generate. | native or v4 |
native
|
pdk new module command
Creates a complete module skeleton and testing templates.
Usage:
pdk new module <module_name> [--template-url=<GIT_URL>] [--license=<IDENTIFIER>] [<TARGET_DIR>] [--skip-interview] [--full-interview]
For example:
pdk new module my_module --template-url=https://github.com/puppetlabs/pdk-templates --full-interview mymodules/my_module
To learn more, see the creating modules topic. For step-by-step instructions, see the create a module topic.
Argument | Description | Values | Default |
---|---|---|---|
<module_name>
|
Required. Specifies the name of the module being created. | A module name beginning with a lowercase letter and including only lowercase letters, digits, and underscores. | No default. |
--full-interview
|
Include interview questions related to publishing modules on the Forge to create module metadata. | None. | If not specified, PDK asks only basic module metadata questions. |
--license=<IDENTIFIER>
|
Specifies the license for this module is written under. |
See the SPDX License List for a list of open source licenses, or use |
Apache-2.0
|
--skip-interview
|
Skip interview questions and use default values to create module metadata. | None. | If not specified, PDK asks basic module metadata questions. |
<TARGET_DIR>
|
Specifies the directory that the new module will be created in. | A valid directory path. | Creates a directory with the given module_name inside the current directory. |
--template-ref=<VALUE>
|
Specifies the reference to use for the specified template for
this module. This option is valid only if you have specified a
template with the --template-url option. |
A template branch name, tag name, or commit SHA for the specified template. | If you have specified a custom template, or if you installed PDK as a gem, this option defaults to
main . Otherwise, defaults to the defaults of the currently
installed PDK version. |
--template-url=<GIT_URL>
|
Specifies a template to use for this module. | A valid Git URL or path to a local template. | If not specified, defaults to the pdk-templates |
pdk new task command
Generates a new task and task metadata in the current module.
Usage:
Within the module directory:
pdk new task [--template-url=<GIT_URL>] <task_name>
For
example: pdk new task my_task
For step-by-step instructions, see the create a task topic.
Argument | Description | Value | Default |
---|---|---|---|
<task_name>
|
Required. The name of the task to generate. | A task name beginning with a lowercase letter and including only lowercase letters, digits, and underscores. | No default. |
--template-url=<GIT_URL>
|
Specifies the template to use when generating this task. | A valid Git URL or path to a local template. | Uses the same template that was used to generate the module. If
that template is not available, defaults to pdk-templates |
pdk new test command
Generates a new test for the specified Puppet object in the current module. This test checks only whether the module compiles a catalog for the module's supported operating system.
The generated test is named based on the defined type or class it tests in the format
<PUPPET_OBJECT_NAME>_spec.rb
, such as
ntp_spec.rb
. Tests are located in /spec/classes
, for classes, or /spec/defines
, for defined types.
Usage:
Within the module directory:
pdk new test [--unit] <puppet_object_name>
For example:
pdk new test --unit ntp
To learn more about unit testing, see Unit testing modules.
Argument | Description | Value | Default |
---|---|---|---|
<puppet_object_name>
|
Required. Specifies the name of the Puppet object (such as a class or defined type) to create a test for. | A valid Puppet object name,
without the file extension, such as ntp . |
No default. |
--unit
|
Generates a new unit test. | None. | By default, creates a unit test. |
pdk release command
Prepares, builds, and publishes a module to the Forge.
Usage:
Within the module directory:
pdk release [--file=<value>] [--force] [--forge-token=<value>] [--forge-upload-url=<value>] [--skip-build] [--skip-changelog] [--skip-dependency] [--skip-documentation] [--skip-publish] [--skip-validation] [--version=<value>]
For example:
pdk release --force pdk release --skip-publish
Argument | Description | Values | Default |
---|---|---|---|
--file
|
Provides a path to the built module to push to the Forge. | File system path. | This option can only be used when --skip-build
is also used. Defaults to pkg/<module
version>.tar.gz |
--force
|
Releases the module automatically without prompts. | When specified, no prompts are given to the user. This automatically set when in Continuous Integration (CI) environments such as Travis CI or Appveyor CI. | |
--forge-token
|
Sets Forge API token. See Forge API reference for information about how to generate a token. | Forge API token. | Required when publishing modules to the Forge. |
--forge-upload-url
|
Sets Forge upload URL path. | Forge API releases endpoint. | Forge API -
https://forgeapi.puppetlabs.com/v3/releases |
--skip-build
|
Skips building the module. | None. | If not specified, builds the module package. |
--skip-changelog
|
Skips the automatic Changelog generation. | None. | If not specified, generates Changelog. |
--skip-dependency
|
Skips the module dependency check. | None. | If not specified, checks module dependencies. |
--skip-documentation
|
Skips the documentation update. | None. | If not specified, updates documentation. |
--skip-publish
|
Skips publishing the module to the Forge. | None. | If not specified, publishes module to the Forge. |
--skip-validation
|
Skips the module validation check. | None. | If not specified, validates module. |
--version
|
Updates the module to the specified version prior to release. | A semantic version number. For example, 1.2.0. | When not specified, the new version is computed from the Changelog when possible. |
pdk release prep command
Prepares a module to be built for the Forge.
Usage:
pdk release prep [--force] [--skip-changelog] [--skip-dependency] [--skip-documentation] [--skip-validation]
For example:
pdk release prep --force
pdk release prep --skip-documentation
Argument | Description | Values | Default |
---|---|---|---|
--force
|
Prepares the module automatically without prompts. | None. | When specified, no prompts are given to the user. This automatically set when in Continuous Integration (CI) environments such as Travis CI or Appveyor CI. |
--skip-changelog
|
Skips the automatic Changelog generation. | None. | If not specified, generates Changelog. |
--skip-dependency
|
Skips the module dependency check. | None. | If not specified, checks module dependencies. |
--skip-documentation
|
Skips the documentation update. | None. | If not specified, updates documentation. |
--skip-publish
|
Skips publishing the module to the Forge. | None. | If not specified, publishes module to the Forge. |
--skip-validation
|
Skips the module validation check. | None. | If not specified, validates module. |
--version
|
Updates the module to the specified version prior to release. | A semantic version number. For example, 1.2.0. | When not specified, the new version is computed from the Changelog when possible. |
pdk release publish command
Publishes an already built module to the Forge.
Usage:
pdk release [--force] [--forge-token=<value>] [--forge-upload-url=<value>]
For example:
pdk release publish --force pdk release --forge-token=abc123
Argument | Description | Values | Default |
---|---|---|---|
--force
|
Releases the module automatically without prompts. | None. | When specified, no prompts are given to the user. This automatically set when in Continuous Integration (CI) environments such as Travis CI or Appveyor CI. |
--forge-token
|
Sets Forge API token. See Forge API reference for information about how to generate a token. | Forge API token. | Required when publishing modules to the Forge. |
--forge-upload-url
|
Sets Forge upload URL path. | Forge API releases endpoint. | Forge API -
https://forgeapi.puppetlabs.com/v3/releases |
pdk test unit command
Runs unit tests. Errors are displayed to the console and reported in the target file, if specified. The exit code is non-zero when errors occur.
Usage:
Within the module directory:
pdk test unit --list
pdk test unit [--tests=<TEST_LIST>] [--format=<FORMAT>[:<TARGET_FILE>]] [--puppet-version=<VERSION>]
For example:
pdk test unit --tests=test1,test2,test3 --puppet-version=7
To learn more, see the validating and testing modules topic. For step-by-step instructions, see the unit test a module topic.
Argument | Description | Value | Default |
---|---|---|---|
--clean-fixtures , -c |
Cleans test fixtures, removing them from the directory and
downloading them again the next time you run pdk test unit . |
None. | If not specified, does not clean test fixtures. |
--format=<FORMAT>[:<TARGET_FILE>]
|
Specifies the format of the output. Optionally, you can specify a
target file for the given output format, such as --format=junit:report.xml . You can
specify multiple --format options if each has a
distinct output target. To output to standard output or standard
error, specify stdout or stderr as
the target value. |
|
If not specified, does not output to a file, but displays errors in the terminal. |
--list
|
Displays a list of unit tests and their descriptions. Using this option lists the tests without running them. | No value. Optional --verbose or
-v flag displays more
information. |
No default. |
--puppet-dev
|
When specified, PDK runs unit
tests against the current Puppet
source from GitHub. To use this
option, you must have network access to https://github.com. You
cannot specify --puppet-dev together
with the --puppet-version= option. |
None. | If not specified, PDK runs unit
tests against default values or those specified by --puppet-version . |
--puppet-version
|
Specifies the Puppet gem version to run unit tests against. |
A string indicating the major Puppet version to test against, such as |
If not specified, tests against the most recent compatible Puppet version included in the PDK package. |
--tests=<TEST_LIST>
|
A comma-separated list of tests to run. Use this during development to pinpoint a single failing test. | See the --list output for
available values. |
No default. |
--verbose
|
When specified, PDK outputs a
single line description for each test as the test is executed. This
option uses the RSpec |
None. | None. |
pdk update command
Update a PDK compatible module with any changes made to the module template.
Usage:
Within the module directory:
pdk update [--force] [--noop]
For
example: pdk update
To learn more, see updating the module with template changes. For step-by-step instructions, see the update a module topic.
Argument | Description | Values | Default |
---|---|---|---|
--force
|
Update the module without prompts. Cannot be used together with
--noop . |
None. | If not specified, PDK prompts for user input. |
--noop
|
Shows what changes PDK would make,
but does not actually make those changes. Cannot be used together
with --force . |
None. | If not specified, PDK prompts for user input and makes changes to the module on confirmation. |
--template-ref=<VALUE>
|
Specifies the reference to use for the specified template for this module. | A template branch name, tag name, or commit SHA for the specified template. | If you have specified a custom template, previously updated your
module to a non-default --template-ref value, this
defaults to the value previously specified in your module metadata.
Otherwise, defaults to the currently installed PDK version (on PDK native package installations) or
main (on PDK gem
installations). |
pdk validate command
Runs all static validations. Any errors are reported to the console in the format requested. The exit code is non-zero when errors occur.
Usage:
Within the module directory:
pdk validate --list
pdk validate [--format=<FORMAT>][:<TARGET_FILE>]] [<VALIDATIONS>] [<TARGETS>*] [--auto-correct] [--parallel] [--puppet-version=<VERSION>]
For example:
pdk validate --format=text:report.xml --auto-correct --parallel
To learn more, see the validating and testing modules topic. For step-by-step instructions, see the validate a module topic.
Argument | Description | Values | Default |
---|---|---|---|
--auto-correct, -a
|
Automatically corrects some common code style problems. | None. | Off. |
--format=<FORMAT>[:<TARGET_FILE>]
|
Specifies the format of the output. Optionally, you can specify a
target file for the given output format, such as --format=junit:report.xml . You can
specify multiple --format options if each has a
distinct output target. To output to standard output or standard
error, specify stdout or stderr as
the target value. |
|
No default. |
--list
|
Displays a list of available validations and their descriptions. Using this option lists the tests without running them. | None. | No default. |
--parallel
|
Runs all validations simultaneously, using multiple threads. | None. | If not specified, validations are run in succession on a single thread. |
--puppet-dev
|
When specified, PDK validates
against the current Puppet source
from GitHub. To use this option, you
must have network access to https://github.com. You cannot specify
--puppet-dev together with the
--puppet-version= option. |
None. | If not specified, PDK validates
against default values or those specified by --puppet-version . |
--puppet-version
|
Specifies the Puppet gem version to run validations against. | A string indicating the major Puppet
version to validate against, such as 7 or 8 . |
If not specified, validates against the most recent compatible Puppet version included in the PDK package. |
<TARGETS>
|
A list of directories or individual files to validate. Validations which are not applicable to individual files will be skipped for those files. | A space-separated list of directories or files. | Validates all available directories and files. |
<VALIDATIONS>
|
A comma-separated list of validations to run or all for all validations. In PowerShell, this list must be
enclosed in single quotes, such as pdk
validate 'puppet,metadata' |
See the --list output for a list
of available validations. |
all
|