»init Command

The packer init command is used to download Packer plugin binaries. This is the first command that should be executed when working with a new or existing template. This command is always safe to run multiple times. Though subsequent runs may give errors, this command will never delete anything.

Packer does not currently have the notion of a state like Terraform has. In other words, currently packer init is only in charge of installing Packer plugins.

Currently, packer init can only fetch binaries from public projects on GitHub. GitHub's public API, limits the number of unauthenticated requests per hour one IP can do. Packer will do its best to avoid hitting those limits and in an average local usage this should not be an issue. Otherwise you can set the PACKER_GITHUB_API_TOKEN env var in order to get more requests per hour. Go to your personal access token page to generate a new token.

packer init will list all installed plugins then download the latest versions for the ones that are missing.

packer init -upgrade will try to get the latest versions for all plugins.

Import a plugin using the required_plugin block :

packer {
  required_plugins {
    happycloud = {
      version = ">= 2.7.0"
      source = "github.com/azr/happycloud"
packer {  required_plugins {    happycloud = {      version = ">= 2.7.0"      source = "github.com/azr/happycloud"    }  }}

HashiCorp does not officially verify third party Packer plugins, plugins not under the HashiCorp namespace hashicorp/*; as with all open source tools, please do your own due diligence when using a new tool.

»Plugin Selection

Plugin selection depends on the source and version constraints defined within the required_plugins block. For each of the required plugins Packer will query the source repository github.com/azr/happycloud whose fully qualified address is https://github.com/azr/packer-plugin-happycloud for a plugin matching the version constraints for the host operating system.

Packer init will install the latest found version matching the version selection in the required_plugins section. Make sure to set a correct version constraint string. The plugins will be installed in the Plugin Directory.

See Installing Plugins for more information on how plugin installation works.

»Implicit required plugin

This is part of a set of breaking changes made to decouple Packer releases from plugin releases. To make the transition easier, we will tag components of these plugins as "moved out". If one of the components of a moved out plugin is used in a config file, but there is no mention of that plugin in the "required_plugin" block, then Packer init will automatically download and install that plugin. Packer will then display a warning and suggest that you add the plugin to your required_plugin block. We recommend you use the required_plugin block even if you are only using official plugins, because it allows you to set the plugin version to avoid surprises in the future.


  • -upgrade - On top of installing missing plugins, update installed plugins to the latest available version, if there is a new higher one. Note that this still takes into consideration the version constraint of the config.