Developing modules with PDK
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
Create a module or convert an existing module to make it compatible with PDK.
Validate your module to verify that it is well-formed.
Unit test your module to verify that all dependencies and directories are present.
Generate classes, defined types, or tasks in your module.
Validate and test your module each time you add new functionality.
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 includes development and testing tools built by Puppet and by the Puppet open source community. PDK also installs its own Ruby environment and any gems it needs.
|Tool||Description||Owned by Puppet|
|facterdb||A gem that contains facts for Operating Systems.||N|
|metadata-json-lint||Validates and lints
|pdk||Tool to generate and test modules and module content, such as classes, from the command line.||Y|
|puppet-lint||Checks your Puppet code against the recommendations in the Puppet language style guide.||Y|
|puppet-syntax||Checks for correct syntax in Puppet manifests, templates, and Hiera YAML.||N|
|puppetlabs_spec_helper||Provides classes, methods, and Rake tasks to help with spec testing Puppet code.||Y|
|rspec-puppet||Tests the behavior of Puppet when it compiles your manifests into a catalog of Puppet resources.||Y|
|rspec-puppet-facts||Adds support for running