website/content/docs/commands/init.mdx
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
[!IMPORTANT]
Documentation Update: Product documentation previously located in/websitehas moved to thehashicorp/web-unified-docsrepository, where all product documentation is now centralized. Please make contributions directly toweb-unified-docs, since changes to/websitein this repository will not appear on developer.hashicorp.com. ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
packer init command referenceStarting August 1st, 2025, the source for many official HashiCorp-maintained Packer plugins is moving from GitHub releases to the official HashiCorp release site, releases.hashicorp.com. Refer to Install HashiCorp-maintained plugins for more information.
</Note>The packer init command initializes Packer according to an HCL template configuration. Refer to Installing Plugins for additional information about installing plugins.
Use the packer init command to download and install plugins according to the required_plugins block in Packer templates written in HCL. Refer to Specifying plugin requirements in the template configuration reference for additional information about configuring the required_plugins block.
Legacy JSON templates are not supported. You can convert your JSON template files to HCL using the hcl2_upgrade command.
We recommend running the packer init command as the first step when working with a new or existing template. You can run the command multiple times. Subsequent runs may produce errors, but the command never deletes already-installed plugins.
We recommend that you vet and verify any third-party plugins you want to install.
By default, Packer installs plugins into the plugins directory at $HOME/.config/packer/plugins on Unix and %APPDATA%\packer.d\plugins on Windows, but you can specify a different directory using the PACKER_PLUGIN_PATH environment variable. Refer to the Packer configuration reference for additional information.
Use the following syntax to run the packer init command:
$ packer init <path-to-template>
The command will process any template file that ends with pkr.hcl.
The template must contain all dependencies when running the command on a single template file. The command fails if the template is intended to be built as a bundle of partials.
For variable definitions, it is recommended to use the extensions .pkrvars.hcl or .auto.pkrvars.hcl. When you run packer init in the directory, these variable definition files will be automatically excluded from processing.
The following example installs the plugins specified in a template from the current directory:
$ packer init .
The following example installs the plugins specified in a template named template.pkr.hcl from the current directory:
$ packer init template.pkr.hcl
The following example installs the plugins specified in the builds/foo/ directory:
$ packer init builds/foo/.
The following example installs the plugins specified in a template from the builds/foo/template.pkr.hcl path:
$ packer init builds/foo/template.pkr.hcl
You can pass the following arguments:
-upgrade: Use this option to upgrade plugins that are already installed to the latest available version. Packer upgrades to the latest version in accordance with the version constraints specified in the template.-force: Use this option to force Packer to reinstall plugins.