PDK release notes

New features, enhancements, and resolved issues for PDK.

PDK 2.7.1

New features and enhancements

  • PDK Templates have been updated to 2.7.4

Resolved issues

  • Fixes an issue with duplicate build-ids for RedHat 9 packages

For more more details, please feel free to check out our project changelog.

PDK 2.7.0

New features and enhancements

  • A RedHat 9 compatible package has been added.

  • A new Puppet validator for Bolt plans has been added by communit member jay7x.

  • PDK Templates have been updated to 2.7.2.

  • Puppet 7.23 has been added to the packages.

  • Ruby 2.7.7 is now the default runtime used by packaged versions of PDK.

  • The minimum ruby requirement has been raised to 2.5.9.

Resolved issues

  • Selecting a Puppet Enterprise version with PDK_PE_VERSION will resolve the latest puppet gem relative to the PE release.

  • The vendored puppet-lint plugins have been updated to their latest compatible versions. This resolves an issue that top scope facts to be formatted incorrectly.

  • Deprecation warnings for bundle show will no longer be displayed when using the release command.


  • PDK no longer ships with OSX 10.15 packages.

  • Legacy i18n support has been removed.

For more more details, please feel free to check out our project changelog.

PDK 2.6.1

New features and enhancements

  • A Ubuntu 22.04 compatible package has been added.

  • An OSX 12 compatible package has been added.

Resolved issues

  • Versions 6.29 and 7.22 of the Puppet gem have been added to the packages. The two new gem releases resolve an issue where an incompatible version of concurrent-ruby may be dowloaded when creating a new module or running pdk validate.

PDK 2.6.0

New features and enhancements

  • Ruby 2.7.6 has been updated to 2.7.7 to address CVE-2021-33621.

  • PDK Templates have been updated to 2.7.1.

  • Support for Fedora 36 has been added.

Resolved issues

  • The vendored puppet-lint plugins have been updated to their latest compatible versions. This resolves an issue where a conflict between puppet-lint and the sytax validator would occur when using the auto fix feature of pdk validate.

  • The vendored facterdb version has been updated. This brings in more supported facts for testing your Puppet code.

  • PDK will no longer attempt to install missing dependencies when creating new modules with the default template.


  • Package support for Fedora 32 and 34 has been removed.

  • Puppet 5 and Ruby 2.4 support has been removed.

  • Nokogiri and it's dependencies have been removed from the packages.

PDK 2.5.0

New features and enhancements

Support added for SUSE Enterprise Linux 15

PDK 2.4.0

Resolved issues

Fix inconsistencies between the pdk validate and pdk release prep commands. The in_module_root function now checks to see if metadata.json is present instead of relying on folder names PDK-1758

PDK 2.3.0

PDK 2.2.0

New features and enhancements

The PDK entry point is now Ruby 2.5, up from Ruby 2.4. This change should be transparent to users as the available Ruby versions are unchanged.

Support added for OSX 11, Debian 11, Fedora 32 & 34

A project level setting containing a list of ignored files or patterns for use with pdk validate puppetlabs/pdk#1114

Bump json_pure gem to ~> 2.5.1 on Ruby >= 2.7 puppetlabs/pdk#1124

PDK 2.1.1

New features and enhancements

Use latest Facter version in GHActions Spec Test Template

The Github Actions spec.yml workflow now sets the FACTER_GEM_VERSION ENV var. See puppetlabs/pdk-templates#439.

Backtrace from spec tests cleaned up

The verbosity of the backtrace from spec test failures has been scaled back to ensure the relevant info is easier to read. puppetlabs/pdk-templates#431.

Resolved issues

Resolved issue with ACCESS_DENIED error on Win Github Actions

Fixes an issue on Windows Server 2016, 2019 instances on Github Actions where child processes were unable to spawn. See puppetlabs/pdk#1084.

Multiple issues resolved in pdk release

Fix for an issue where the changelog top most version did not match the version in metadata.json.

pdk release can now handle the scenario where no Forge token is provided.

See puppetlabs/pdk#1088.

PDK 2.1

New features and enhancements

Add pdk env subcommand

Adds an experimental pdk env subcommand. Use pdk env to print the environment variables that PDK is currently using (https://github.com/nkanderson).

Resolved issues

--verbose option broken for pdk new defined_type

Fixes an issue where the --verbose option would not work with the pdk new defined_type command. See ddfreyne/cri#103.

PDK output scrollback in VS Code limited

Resolves a scrollback issue when using PDK in the integrated terminal of VS Code by disabling ANSICON on Windows.

Template changes and fixes

  • Relocated theinventory.yaml file used by Litmus. This prevents accidental execution of acceptance tests in production systems. (https://github.com/pmcmaw)

  • Removed Win32 gems from the Gemfile. These have been included in Puppet since version 5. (https://github.com/da-ar)

  • Added Puppet 7 tests to .gitlab-ci.yml (https://github.com/silug)

PDK 2.0

Backwards incompatible changes

Removed support for Puppet 4.x and Ruby < 2.4.0

The PDK gem now requires at least Ruby 2.4.0. PDK OS-native packages no longer include Puppet 4.x or the Ruby 2.1.9 runtime environment. If your workflow requires you to work with Puppet 4.x code, you can continue to use the latest PDK 1.x release, however support for the 1.x series might end soon.

New default mocking framework

The default mocking framework for RSpec tests has been updated to rspec-mocks. Previously puppetlabs_spec_helper was loading both rspec-mocks and mocha. This leads to confusing inconsistencies in unit tests. We've been recommending rspec-mocks as the preferred library for some time. If your test suite is not yet ready for this step, remove the default value by setting mock_with: ~ (YAML's nil value) in your .sync.yml file to get the PDK 1.x behavior. (https://github.com/DavidS)

New features and enhancements

Added ability to generate new facts

Added the pdk new fact command to generate new custom facts in a module. (https://github.com/logicminds)

Added ability to generate new functions

Added the pdk new function command to generate new functions in a module. (https://github.com/logicminds)

Added AIX option to new module interview options

Added AIX to OS compatibility picker during the guided interview for pdk new module. (https://github.com/logicminds)

Set Forge API token via environment variable

You can now set your Forge API token via the PDK_FORGE_TOKEN environment variable. (https://github.com/logicminds)

Renamed default branches to main

The default branches for PDK and the PDK templates repositories have been renamed to main, and the PDK's template-related code has been updated to reflect this change. If you have a module that was manually pinned to the master branch of the templates repo you might need to use pdk convert --default-template to switch back to the default branch.

Similarly, the --puppet-dev version selection flag now pulls from the main branch of the official Puppet source code repository.

Better error messages for pdk release publish failures

The pdk release publish command now surfaces the underlying Forge error messages if the module upload step fails. (https://github.com/michaeltlombardi)

Resolved issues

Improved Facter compatibility

The PDK gem can now be activated alongside Facter 4.x. (https://github.com/GabrielNagy)

Removal of harmful/offensive terminology

Several instances of inappropriate, harmful, or insensitive terminology have been removed from documentation, code examples, etc. Please open an issue or pull request if you find additional instances.

Template Changes and Fixes

  • To set up code for the default Ruby 2.7 behavior, the Rubocop rule Style/BracesAroundHashParameters is now disabled by default. (https://github.com/alexjfisher)

  • Improved flexibility of Appveyor configuration by providing a remove_includes option to manipulate the jobs to be run. (https://github.com/sheenaajay)

  • Enabled VSCode's "Remote Containers" plugin to allow running all the backend tooling in a remote container, instead of requiring a local PDK install. (https://github.com/silug)

  • Fixed setting strict_variables to false. (https://github.com/cdenneen)

  • Updated GitLab CI config to new schema. (https://github.com/silug)

  • Updated pdk build to automatically exclude .puppet-lint.rc and .sync.yml. (https://github.com/silug)

  • Added an empty, commented .sync.yml to new modules to help folks jumpstart the customization process. (https://github.com/silug)

  • Added ability to override GitLab CI global defaults in jobs. (https://github.com/cdenneen)

  • Added Gitpod.io support to modules. (https://github.com/logicminds)

  • Implemented Puppet's public Litmus runners in Github Actions workflows. This provides immediate feedback on testing through running the full test suite against ephemeral VMs on each PR update. (https://github.com/DavidS, https://github.com/ekohl)

  • Travis config now allows setting the chosen distributions per Puppet collection for acceptance tests. (https://github.com/adrianiurca)

  • Updated template-configured Rubocop to current version; updated default cops; updated target Ruby version to 2.4. (https://github.com/tuxmea, https://github.com/DavidS)

  • Updated default Ruby version for static analysis steps run in Appveyor. (https://github.com/pmcmaw)

  • Added a Github workflow to run module release prep on-demand or on a schedule. (https://github.com/carabasdaniel, https://github.com/pmcmaw, https://github.com/ekohl)

  • Added an optional step to run Litmus on Gitlab CI. (https://github.com/cdenneen)

  • Fixed new object templates to pass validation and unit tests after initial generation. (https://github.com/DavidS, https://github.com/cdenneen)

  • Removed Puppet 5.x from default Travis and Appveyor configs. (https://github.com/carabasdaniel, https://github.com/cdenneen)