Packer v1.7.0 has been released

Skip to first unread message

Adrien Delorme

Feb 17, 2021, 11:40:47 AM2/17/21
Hello everyone,

Packer version 1.7.0 has been released, and it's a big one with a lot of exciting news to communicate. There are some current and upcoming backward-incompatibilities associated with this release, so it's worth reading this email.

Packer and HCL
We're thrilled to announce that HCL Packer templates are officially out of beta and are now our preferred and recommended way for you to interact with Packer. This isn't to say that we don't have a few lingering tweaks to make or enhancements to add, but we're confident that the template format is stable and we think that the user experience improvement that comes with using HCL is huge.  If you have not already tried HCL, give it a go by automatically converting your JSON template using the packer hcl2_upgrade command. Full details on this command and how to use it can be found here.
What does this mean for JSON templates? Their current functionality is still supported. However, as we add new features to the Packer core, we may not add them to JSON templates.

Packer Plugin SDK
The Packer project wants to make it easier for community members to create and maintain third-party plugins, so we have extracted plugin-related code into a standalone SDK with better documentation, organization, and testing frameworks. We have created a command line tool to help maintainers of current plugins migrate from the old import paths within the Packer core to the new import paths in the packer-plugin-sdk. The tool and instructions can be found here. You will need to upgrade to use this SDK in order for your plugin to be compatible with the Packer v1.7.0 core. Please reach out if you have any questions or issues upgrading your plugin. 

Multi-component Packer Plugins
Historically, Packer has had a 1:1 relationship between a plugin (installed binary) and a single component (either a builder, provisioner, or a post-processor). We are adding a new plugin type that allows maintainers to bundle together multiple different components that use the same SDK or API into single plugins. Instructions for how to convert your single-component plugin into a multi-component plugin can be found here. You do not need to convert your plugin to keep it working with the Packer core; single-component plugins are still supported. However, the new packer init command introduced below will only work with plugins that use the multi-component server type, even if the plugin only serves one component.

New Packer Init Command
Enabling community plugin maintainers is not enough without also improving the story around plugin installation for end users. That's why we've created a packer init command. This command allows users to declare the third party plugins, and their versions, required by a specific Packer template. The command is limited to plugins released on GitHub using a custom release workflow: for full details on how to release a compatible plugin, see our docs here. For instructions on how to use packer init to download a compatible plugin, see the init docs here
Community plugins installed the old way will still work, as long as they are upgraded to use the new API version defined with the packer-plugin-sdk release. If you are only using plugins bundled with the Packer core, nothing changes for you right now and you do not need to worry about packer init yet. Packer init is only supported in HCL templates. For a step by step guide with more information on updating your template to work with packer init, see our guide here.

Packer Data Sources
We're introducing another Terraform-inspired feature this release: a new "data source" component type. This component will be used to retrieve information using API calls and store that information in HCL variables that can be used in your Packer templates. So far, we've created the scaffolding for how to implement a data source in a multi-component plugin and created an "aws-secrets-manager" data source that is essentially an abstracted re-implementation of the same-named template engine. We expect that this pattern will be a powerful and flexible new tool for our users. These are only supported in HCL templates, giving you another reason to upgrade. For full details, see our data source documentation here.

General Bug Fixes and Enhancements
We've also got the usual improvements and bug fixes, though the changelog is a little lighter this release because of all the new architectural features. Take a look at the changelog for more details about other updates bundled into this release.

As always, we want to hear from you if you have any issues or ideas. We're really excited for this next phase of Packer and hope you are too.

The Packer team.
Reply all
Reply to author
0 new messages