homeblogkeep your puppet modules up to date pdk

Keep your Puppet modules up to date with PDK

The release of PDK v1.3 introduced the convert feature for making existing modules compatible with PDK. You can read more about that in Helen Campbell’s blog post, A guide to converting a module with PDK.

With PDK v1.4, we are introducing a follow-up to that feature called update. Where convert is meant to get your old modules on the road to developing with PDK, the update feature will help ensure that your module stays on it!

We've focused on some important aspects of the module developer workflow to make it simple and accessible to the everyday module developer. Since the original release of PDK, we’ve added features to simplify that workflow. We initially introduced you to the module and resource generators, which let you start your new module in a simple and consistent manner, with everything you need to hit the ground running writing Puppet code. We then added validators and unit test runners to help ensure the quality of your module code is consistent across platforms and adheres to the best practices and standards being used in the Puppet modules development community. With pdk update, we provide you with a way to keep your module up to date, not only with any updates PDK may introduce with each new release, but also with any of your own custom template changes!

The command

The command usage for pdk update is similar to pdk convert, without the ability to specify a --template-url. Instead, the update feature updates your module using the template-url already defined in the module metadata.

The available command flags for pdk update are:

pdk update --noop

Use --noop to run in a no-op, or dry-run, mode. This is useful for seeing the changes PDK will make to your module without actually applying the changes.

pdk update --force

If you’ve already confirmed the expected changes and want to proceed with committing to those changes, then use the --force command to apply the module updates without any prompts.

When do I need to use update?

Examples of when to use pdk update on your module include:

  • When a new version of PDK is released, run pdk update to sync your PDK compatible module with any included template updates.
  • When you’ve made updates to your .sync.yml file to customize your module configuration, and you want to sync your module with those changes.
  • When you’ve generated or converted your module to PDK using a custom template, and you’d like to sync your module to include any updates from that custom template.

Here is a demo of using pdk update for one of the examples above.

A PDK compatible module

We will start off with a PDK compatible module: puppetlabs-ntp, which has been converted with the pdk convert process.


Install PDK v1.4.1

We will update our PDK install to the v1.4.1 release.


Run pdk update

When we first check for template updates, we can run pdk update --noop to perform a dry-run, so that we can inspect the potential changes.


As shown above, there have been updates to the pdk-templates since the time the module was generated or converted. Those differences are also detailed in the update_report.txt. At this point, we’ll verify that the changes to the above files are acceptable changes.

Sign off on changes and apply them

Once we’ve inspected the update_report.txt, we’ll run pdk update --force and apply those changes.


Once those changes have been applied, the module metadata will be updated to reflect the PDK version and template information used to update the module. Upon the next release of PDK, we'll run pdk update again. The pdk update command is idempotent, so running the command again reflects that the module is up to date.


Continue developing!

And that’s it! With this latest release of PDK, you can maintain your module without the guesswork and investigation of configuration changes and best practices from around the internet and modules development community. If you develop with PDK, then you can use PDK to stay current!

Bryan Jen is a senior software engineer at Puppet.

Learn more

Puppet sites use proprietary and third-party cookies. By using our sites, you agree to our cookie policy.