PDK release notes
New features, enhancements, and resolved issues for PDK.
On this page:
PDK 3.5.0
Released in June 2025. This version of PDK adds support for macOS 14, Fedora 40, and Ubuntu 24.04. Support for Red Hat 9 was extended to AARCH64. This version removes support for SLES 12 and macOS 11 and 12. Support was removed for Puppet 7 and Ruby 2.7. Updates were implemented to help prevent security vulnerabilities and fix template and validation bugs.
New features and enhancements
You can now install PDK on the following operating systems:
-
macOS 14
-
Fedora 40
-
Red Hat 9 (AARCH64)
-
Ubuntu 24.04
PDK is now under the Puppet Core license
To download and install PDK 3.5.0, which is stored in a protected repository, you must authenticate using either your Puppet Core or Puppet Enterprise (PE) credentials. You can use either of the following sets of credentials, ensuring that you use either a Forge username and password or a PE username and password.
-
The string literal
forge-key
as the username and the Puppet Core Forge API key associated with your Puppet Core free or paid user as the password. For more information about the API key, see Purchasing Puppet Core and Accessing Puppet Core for limited use for testing or development. -
The string literal
license-id
as the username and your PE License ID as the password. You can find your PE License ID in your PE license file or in the PE console by selecting License from the navigation bar.
Deprecations
-
Support is removed for the following platforms:
-
macOS 11
-
macOS12
-
SLES 12
Packages for these platforms are no longer being built.
-
-
Ruby 2.7 is no longer supported.
-
Puppet 7 is no longer supported.
-
You can't install this version of PDK using Homebrew or Chocolatey, but you can install it directly on macOS and Windows. See Install PDK on macOS and Install PDK on Windows.
Bug fixes
-
The
yaml_syntax_validator
check was corrected to give an error when validating an empty file. -
The template error message was updated to reference known issues with PDK.
-
The
latest_template?
check was updated to correctly compare version numbers.
Runtime changes
-
Bundled Puppet 7 and Ruby 2.7 runtime versions were removed. Release packages now contain only Puppet 8 and Ruby 3.
-
The bundled version of Git was updated to resolve the following CVEs: CVE-2024-52005, CVE 2024-52006, CVE 2024-50349, and CVE 2023-25815.
-
The bundled Ruby version was updated to 3.2.8.
-
The augeas lense is no longer being removed from the inbuilt runtime.
-
Curl was updated to 8.14.0 to resolve CVE-2025-4947 and CVE-2025-5025.
Template changes
-
puppet-debugger
was repinned to the newest version, 1.6.0. -
jason-schema
was pinned to earlier than version 5.1.1. -
The
rexml
pin was removed. -
Gemfile was updated to bring in
puppetcore
gems if the relevantPUPPET_FORGE_TOKEN
is found in the environment. -
Dependencies required for Ruby versions earlier than 3.1 were removed.
PDK 3.4.0
Deprecations
-
Support has been removed for SLES 12 and packages for it are no longer being built.
New features and enhancements
-
The in built
forge upload
functionality has been replaced with a call to thepuppet_forge gem
. -
json-schema
dependency updated to~> 5.0
in order for it to be kept it in line with the wider Puppet products. -
Support for
RedHat 8
has been extended toAARCH64
with new packages built.
Bug fixes
-
A parser swap to
JSON::Pure
has been removed from themetadata_syntax_validator
changing the format of the output. This was required due to the parser used no being longer included within either thejson
orjson_pure
gems. -
Removed the dependency on the
json_pure
gem as it is no longer necesary withjson
added as a default Ruby gem. -
Deprecated call
Gem::Platform.match()
replaced with the modernGem::Platform.match_spec?
withinpuppet_version.rb
. -
Updated
vendored_file.rb
to use vendored cert files andVERIFY_PEER
withNET::HTTP
on Windows machines. -
The above change to
vendored_file.rb
has been updated to sethttp.ca_file
rather thanhttp.cert
. -
The PDK spinner has been updated on Windows to be more consistent, with tick marks now being given upon success.
Runtime changes
-
The version of the
git
gem bundled within the runtime has been set to2.39.4
. -
The
json_pure
gem has been removed from the runtime. -
The
puppet_forge gem
has been added to the runtime pinned to5.0.4
, with the following dependencies also added:-
Dependency
faraday
pinned to2.12.0
. -
Dependency
faraday-follow_redirects
pinned to0.3.0
. -
Dependency
faraday-net_http
pinned to3.3.0
. -
Dependency
semantic_puppet
pinned to1.1.0
. -
Dependency
minitar
already present, pin kept at0.9
.
-
Template changes
-
The
puppet_blacksmith
gem has been added to the templates, pinned to~> 7.0
. -
The
puppetlabs_spec_helper
gem has been repinned to~> 8.0
. -
Default
lint
configuration has been updated to match that withinpuppetlabs_spec_helper
. Notation added to help ensure they are kept in sync.
PDK 3.3.0
New features and enhancements
-
Name validation now skipped for controlrepo's
-
The PDK has been updated to use the
modulebuilder
gem in place of duplicated code within the PDK. -
Support for Debian 11 and 12 has been extended to AARCH64 with new packages built
-
Support for Ubuntu 18.04 to 24.04 has been extended to AARCH64 with new packages built
-
Support for Red Hat 9 has been extended to AARCH64 with new packages built
-
Support for Mac OsX 13 has been extended to arm64 with new packages built
-
Windows 2019 package is now being tested on Windows 11 to ensure support
Bug fixes
-
The
childprocess
gem has been updated and a patch for it has been removed. -
pdk test --list
has been updated to account for a change in how information is passed back to it.
Template changes
-
Bolt-related files added to the
.gitignore
default paths -
puppetlabs_sec_help
pinned to 7.3 or newer and.rspec.erb
removed to account -
Pin added for
rexml
to account for Windows issues -
deep_merge
updated to require 1.2.2 or newer -
Config extras handling added back into the Rakefile
-
.vendor
added to.gitignore
-
facterdb
repinned to ~> 2.1 andrspec-puppet-facts
to ~> 4.0
PDK 3.2.0
Deprecations
-
Analytics have been removed from the code
-
Support has been officially withdrawn for Debian 9 and Red Hat 6.
New features and enhancements
-
Support has been added and packages are now being built for Debian 12 and Mac OSX 13.
-
While not possessing an explicit package Windows 11 is now being verified as supported.
Template changes
-
CFPropertyList has been pinned on Windows
-
Fix implemented so that
.sync.yml
will properly overide Rubocop rules -
Duplicate gems have been removed
PDK 3.1.0
New features and enhancements
-
Executable templates are now supported
-
pdk convert
andpdk update
can now work in a ControlRepo context
Template changes
-
The templates have been updated to allow Rubocop rules to be overriden.
-
CFPropertyList has been added as a pinned dependency on Windows.
-
Our Rubocop pin has been increased to
1.50.0
. -
The
codecov
gem has been removed. -
The archived ruby vscode extension has been replaced.
PDK 3.0.1
New features and enhancements
-
Updated various dependencies
-
Added stricter
puppetlabs_spec_helper
dependency -
Minor adjustments to our documentation
PDK 3.0.0
PDK 3.0 is a backwards incompatible release.
New features and enhancements
-
Ruby 3.2.2 is now the default version of Ruby.
-
Puppet 8 is now the default version of Puppet.
-
PDK no longer relies on PowerShell, you are able to use PDK from any terminal that honours your PATH variable.
-
As of this release, PDK now only includes the latest Puppet versions available at the time of build. This siginficantly reduces the package size and improves performance.
-
The
bundle
command is no longerexperimental
. -
PDK now properly respects the
verbose
option when utilizing format options for unit testing. -
PDK now supports the
operatingsystem_support
parameter fromanswers.json
.
Deprecations
-
The
--pe-version
flag has been deprecated. It will continue to work but we advise moving to--puppet-version
given that this flag will be removed in a future release. -
The deprecated
module
command has now been removed. -
The deprecated
config
command has now been removed. -
The experimental
console
command has been removed from this release.