mirror of
https://github.com/hashicorp/packer.git
synced 2026-06-13 18:50:11 -04:00
Since this feature is no longer something we plan to activate later, as it contradicts with our efforts to remove bundled plugins, and encouraging users to move to either manually installing plugins, or managing them through `packer init', we clean-up the code for this feature.
94 lines
4.3 KiB
Text
94 lines
4.3 KiB
Text
---
|
|
description: |
|
|
The `packer init` Packer command is used to download Packer plugin binaries.
|
|
page_title: packer init - Commands
|
|
---
|
|
|
|
# `init` Command
|
|
|
|
-> **Note:** Packer init does not work with legacy JSON templates. You can
|
|
upgrade your JSON config files to HCL using the [hcl2_upgrade](/packer/docs/commands/hcl2_upgrade) command.
|
|
|
|
-> **Note:** Packer init will only work with multi-component plugins -- that is
|
|
plugins that are named `packer-plugin-*`. To install a single-component plugin --
|
|
that is `packer-provisioner-*`, `packer-builder-*`, etc. -- nothing changes, you will
|
|
have to [install the plugin manually](/packer/docs/plugins#installing-plugins).
|
|
|
|
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.
|
|
|
|
You should invoke `packer init` on either an HCL2 template, or a directory that contains
|
|
at least a valid HCL2 template, and eventually other related dependencies like varfiles
|
|
for example.
|
|
|
|
Example:
|
|
|
|
```sh
|
|
$ ls .
|
|
template.pkr.hcl varfile.pkrvars.pkr.hcl
|
|
|
|
$ packer init template.pkr.hcl # You can invoke packer init on a single template in this case
|
|
# This works if the template is self-contained, but may fail if
|
|
# the template is meant to be built as a bundle of partials.
|
|
|
|
$ packer init . # Alternatively, you can invoke packer init on a directory instead,
|
|
# which behaves the same in a configuration like this one, but if
|
|
# the target is a collection ofHCL2 templates, this is the
|
|
# preferred way to invoke it.
|
|
```
|
|
|
|
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](https://docs.github.com/en/developers/apps/rate-limits-for-github-apps#normal-user-to-server-rate-limits).
|
|
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](https://github.com/settings/tokens) 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`](/packer/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements)
|
|
block :
|
|
|
|
```hcl
|
|
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 community 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](/packer/docs/templates/hcl_templates/blocks/packer#version-constraints). The
|
|
plugins will be installed in the [Plugin
|
|
Directory](/packer/docs/configure#packer-s-plugin-directory).
|
|
|
|
See [Installing Plugins](/packer/docs/plugins#installing-plugins) for more information on how plugin installation works.
|
|
|
|
## Options
|
|
|
|
- `-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.
|