Create a complete module with classes, defined types, and tasks, and test and validate your work as you go.

PDK provides a complete module structure, templates for classes, defined types, and tasks, and a testing infrastructure. You can validate and test your module against various operating systems and multiple Puppet versions.

You can also convert existing modules to make them compatible with PDK. This allows you to use all of the creation, validation, and testing tools in PDK with the converted module.

PDK development workflow

  1. Create a module or convert an existing module to make it compatible with PDK.

  2. Validate your module to verify that it is well-formed.

  3. Unit test your module to verify that all dependencies and directories are present.

  4. Generate classes, defined types, or tasks in your module.

  5. Validate and test your module each time you add new functionality.


Diagram of PDK commands in the development workflow.

When you validate and run unit tests on your module, you can check it against specific versions of Puppet and PE. This can help you ensure compatibility with multiple versions of Puppet and make upgrades smoother. 

PDK can unit test code that it generates, but for any other code you add, you'll need to write unit tests. As you add code to your module, validate and unit test your module before and after adding code. This ensures that you are always developing on a clean, valid codebase.

PDK tools

PDK includes a variety of development and testing tools built by Puppet and by the Puppet open source community. 

ToolDescription
metadata-json-lintValidates and lints metadata.json files in modules against Puppet module metadata style guidelines.
pdkTool to generate and test modules and module content, such as classes, from the command line.
puppet-lintChecks your Puppet code against the recommendations in the Puppet Language style guide.
puppet-syntaxChecks for correct syntax in Puppet manifests.
puppetlabs_spec_helperProvides classes, methods, and Rake tasks to help with spec testing Puppet code.
rspec-puppetTests the behavior of Puppet when it compiles your manifests into a catalog of Puppet resources.
rspec-puppet-factsAdds support for running rspec-puppet tests against the facts for your supported operating systems.
Back to top