add PACKER_PLUGIN_PATH for plugin discovery
This commit is contained in:
parent
39c25b2c66
commit
83ecebbf37
20
config.go
20
config.go
|
@ -123,7 +123,23 @@ func (c *config) Discover() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// First, look in the same directory as the executable.
|
// First, check whether there is a custom Plugin directory defined. This gets
|
||||||
|
// absolute preference.
|
||||||
|
if packerPluginPath := os.Getenv("PACKER_PLUGIN_PATH"); packerPluginPath != "" {
|
||||||
|
sep := ":"
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
// on windows, PATH is semicolon-separated
|
||||||
|
sep = ";"
|
||||||
|
}
|
||||||
|
plugPaths := strings.Split(packerPluginPath, sep)
|
||||||
|
for _, plugPath := range plugPaths {
|
||||||
|
if err := c.discoverExternalComponents(plugPath); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next, look in the same directory as the executable.
|
||||||
exePath, err := osext.Executable()
|
exePath, err := osext.Executable()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[ERR] Error loading exe directory: %s", err)
|
log.Printf("[ERR] Error loading exe directory: %s", err)
|
||||||
|
@ -133,7 +149,7 @@ func (c *config) Discover() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Next, look in the plugins directory.
|
// Next, look in the default plugins directory inside the configdir/.packer.d/plugins.
|
||||||
dir, err := packer.ConfigDir()
|
dir, err := packer.ConfigDir()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[ERR] Error loading config directory: %s", err)
|
log.Printf("[ERR] Error loading config directory: %s", err)
|
||||||
|
|
|
@ -51,6 +51,7 @@ Once the plugin is named properly, Packer automatically discovers plugins in
|
||||||
the following directories in the given order. If a conflicting plugin is found
|
the following directories in the given order. If a conflicting plugin is found
|
||||||
later, it will take precedence over one found earlier.
|
later, it will take precedence over one found earlier.
|
||||||
|
|
||||||
|
|
||||||
1. The directory where `packer` is, or the executable directory.
|
1. The directory where `packer` is, or the executable directory.
|
||||||
|
|
||||||
2. The `$HOME/.packer.d/plugins` directory, if `$HOME` is defined (unix)
|
2. The `$HOME/.packer.d/plugins` directory, if `$HOME` is defined (unix)
|
||||||
|
@ -62,6 +63,14 @@ later, it will take precedence over one found earlier.
|
||||||
|
|
||||||
5. The current working directory.
|
5. The current working directory.
|
||||||
|
|
||||||
|
6. The directory defined in the env var `PACKER_PLUGIN_PATH`. There can be more
|
||||||
|
than one directory defined; for example, `~/custom-dir-1:~/custom-dir-2`.
|
||||||
|
Separate directories in the PATH string using a colon (`:`) on posix systems and
|
||||||
|
a semicolon (`;`) on windows systems. The above example path would be able to
|
||||||
|
find a provisioner named `packer-provisioner-foo` in either
|
||||||
|
`~/custom-dir-1/packer-provisioner-foo` or
|
||||||
|
`~/custom-dir-2/packer-provisioner-foo`.
|
||||||
|
|
||||||
The valid types for plugins are:
|
The valid types for plugins are:
|
||||||
|
|
||||||
- `builder` - Plugins responsible for building images for a specific
|
- `builder` - Plugins responsible for building images for a specific
|
||||||
|
|
|
@ -39,6 +39,14 @@ each can be found below:
|
||||||
connections on your local host. The default is 10,000. See the [core
|
connections on your local host. The default is 10,000. See the [core
|
||||||
configuration page](/docs/other/core-configuration.html).
|
configuration page](/docs/other/core-configuration.html).
|
||||||
|
|
||||||
|
- `PACKER_PLUGIN_PATH` - a PATH variable for finding third-party packer
|
||||||
|
plugins. For example: `~/custom-dir-1:~/custom-dir-2`.
|
||||||
|
Separate directories in the PATH string using a colon (`:`) on posix systems and
|
||||||
|
a semicolon (`;`) on windows systems. The above example path would be able to
|
||||||
|
find a provisioner named `packer-provisioner-foo` in either
|
||||||
|
`~/custom-dir-1/packer-provisioner-foo` or
|
||||||
|
`~/custom-dir-2/packer-provisioner-foo`.
|
||||||
|
|
||||||
- `CHECKPOINT_DISABLE` - When Packer is invoked it sometimes calls out to
|
- `CHECKPOINT_DISABLE` - When Packer is invoked it sometimes calls out to
|
||||||
[checkpoint.hashicorp.com](https://checkpoint.hashicorp.com/) to look for
|
[checkpoint.hashicorp.com](https://checkpoint.hashicorp.com/) to look for
|
||||||
new versions of Packer. If you want to disable this for security or privacy
|
new versions of Packer. If you want to disable this for security or privacy
|
||||||
|
|
Loading…
Reference in New Issue