2021-02-02 12:05:04 -05:00
|
|
|
---
|
|
|
|
description: |
|
|
|
|
The `packer init` Packer command is used to download Packer plugin binaries.
|
|
|
|
page_title: packer init - Commands
|
|
|
|
sidebar_title: <tt>init</tt>
|
|
|
|
---
|
|
|
|
|
|
|
|
# `init` Command
|
|
|
|
|
2021-02-05 07:26:58 -05:00
|
|
|
-> **Note:** 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.
|
2021-02-02 12:05:04 -05:00
|
|
|
|
2021-02-05 07:26:58 -05:00
|
|
|
-> **Note:** Currently, `packer init` can only fetch binaries from public
|
2021-02-02 12:05:04 -05:00
|
|
|
projects on *Github*.
|
|
|
|
|
2021-02-05 07:26:58 -05:00
|
|
|
-> **Note:** Currently, `packer init` only fetches binaries using Github's
|
2021-02-02 12:05:04 -05:00
|
|
|
public API, which [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
|
|
|
|
`PKR_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.
|
|
|
|
|
2021-02-05 07:26:58 -05:00
|
|
|
-> **Note:** Packer init does not work with legacy JSON templates. You can
|
|
|
|
upgrade your JSON config files to HCL using the hcl2ugprade command.
|
|
|
|
|
|
|
|
-> **Note:** Packer init will only work with multiplugins -- that is plugins
|
|
|
|
that are named `packer-plugin-*` -- to install a single plugin binary -- that is
|
|
|
|
`packer-provisioner-*`, `packer-builder-*`, etc. -- nothing changes, you will
|
|
|
|
have to [install the plugin manually](/docs/plugins#installing-plugins).
|
2021-02-02 12:05:04 -05:00
|
|
|
|
|
|
|
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 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`](/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements)
|
|
|
|
block :
|
|
|
|
|
|
|
|
```hcl
|
|
|
|
packer {
|
|
|
|
required_plugins {
|
|
|
|
myawesomecloud = {
|
|
|
|
version = ">= 2.7.0"
|
|
|
|
source = "azr/myawesomecloud"
|
|
|
|
}
|
|
|
|
happycloud = ">= 2.7.0"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Packer init will install the latest found version matching the version selection
|
2021-02-05 07:26:58 -05:00
|
|
|
in the `required_plugins` section. Make sure to set a correct [version
|
|
|
|
constraint
|
|
|
|
string](/docs/templates/hcl_templates/blocks/packer#version-constraints). The
|
|
|
|
plugins will be installed in the [Plugin
|
|
|
|
Directory](/docs/configure#packer-s-plugin-directory).
|
2021-02-02 12:05:04 -05:00
|
|
|
|
|
|
|
|
|
|
|
## 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.
|