| Upon the initialization of Packer, any externally installed plugin will be automatically |
| discovered and loaded. |
| |
| Packer plugins will usually be located within a plugins sub-directory under Packer's main config directory |
| [PACKER_CONFIG_DIR](/packer/docs/configure#packer-s-config-directory). If `PACKER_CONFIG_DIR` is |
| either not set or empty, a default equal to `$HOME/.config/packer/plugins` on UNIX, or `%APPDATA%\packer.d\plugins` |
| for Windows, will be used. |
| |
| Where applicable, some installation processes such as `packer init` may override the plugin loading process. |
| Refer to the specific installation guides for any plugin loading overrides. |
| |
| Packer uses the following process for loading the correct plugin: |
| |
| 1. All directories under the `PACKER_PLUGIN_PATH` environment variable, if `PACKER_PLUGIN_PATH` |
| is set. The `PACKER_PLUGIN_PATH` takes precedences over all other plugin directories; no other directories will be checked. |
| 1. The directory where `packer` is installed, or the executable directory. |
| 1. The current working directory, where `packer build` is being invoked. (`"."`) |
| 1. The `PACKER_CONFIG_DIR/plugins` directory. `PACKER_CONFIG_DIR` refers to *[Packer's config |
| directory](/packer/docs/configure#packer-s-config-directory)*, if it could be found. |
| |
| -> **Note:** The `PACKER_PLUGIN_PATH` environment variable can be set to more that one directories; |
| for example, ~/custom-dir-1:~/custom-dir-2. Separate directories in the PATH string using a colon (:) on UNIX systems |
| and a semicolon (;) on Windows systems. The above example path would be able to find a single or multi-component plugin |
| in either `~/custom-dir-1/packer/` or `~/custom-dir-2/`. |
| |