pdk

The Puppet Development Kit

Puppet has created a development kit for creating puppet modules.

PDK includes testing tools, a complete module skeleton, and command line tools to help you create, validate, and run tests on Puppet modules. PDK also includes all dependencies needed for its use.

PDK includes the following tools:

Tool Description
metadata-json-lint Validates and lints metadata.json files in modules against Puppet's module metadatastyle guidelines.
pdk Command line tool for generating and testing modules
puppet-lint Checks your Puppet code against the recommendations in the Puppet Language style guide.
puppet-syntax Checks for correct syntax in Puppet manifests, templates, and Hiera YAML.
puppetlabs_spec_helper Provides classes, methods, and Rake tasks to help with spec testing Puppet code.
rspec-puppet Tests the behavior of Puppet when it compiles your manifests into a catalog of Puppet resources.
rspec-puppet-facts Adds support for running rspec-puppet tests against the facts for your supported operating systems.

Installation

Download and install the newest package matching your platform from the download page. If you are using Windows, remember to close any open PowerShell windows.

For complete installation information, see the PDK documentation.

Basic usage

PDK can generate modules and classes, validate module metadata, style, and syntax, and run unit tests. This README contains very basic usage information---for complete usage information, see the PDK documentation.

Generate a module

Generates the basic components of a module and set up an infrastructure for testing it with PDK.

Run the pdk new module command, specifying the name of the new module:

pdk new module my_module

This command asks a series of metadata questions and then generates the basic components of a new module.

Generate a class

To generate a class in your module, use the pdk new class command, specifying the name of your new class. To generate the main class of the module, which is defined in an init.pp file, give the class the same name as the module.

From the command line, in your module's directory, run:

pdk new class class_name 

PDK creates the new class manifest and a test file (as classnamespec.rb) in your module's /spec/classes directory.

Generate a defined type

To generate a defined type in your module, use the pdk new defined_type command, specifying the name of your new defined type.

From the command line, in your module's directory, run:

pdk new defined_type defined_type_name

PDK creates the new definedtype manifest and a test file (as definedtypenamespec.rb) in your module's /spec/defines directory.

Validating a module

PDK can validate the well-formedness of the module and style and syntax of its files.

In the module's directory, run:

pdk validate

This command validates the metadata, Puppet code syntax and style, and Ruby syntax and style for the entire module.

Run unit tests

PDK's default template sets up rspec for Ruby-level unit testing, and rspec-puppet for catalog-level unit testing.

In the module's directory, run unit tests with:

pdk test unit

This command runs all available unit tests.