diff --git a/packer/config_file.go b/packer/config_file.go index 04275f457..173766afa 100644 --- a/packer/config_file.go +++ b/packer/config_file.go @@ -52,18 +52,31 @@ func homeDir() (string, error) { } func configFile() (string, error) { - dir, err := homeDir() - if err != nil { - return "", err + var dir string + if cd := os.Getenv("PACKER_CONFIG_DIR"); cd != "" { + log.Printf("Detected config directory from env var: %s", cd) + dir = cd + } else { + homedir, err := homeDir() + if err != nil { + return "", err + } + dir = homedir } - return filepath.Join(dir, defaultConfigFile), nil } func configDir() (string, error) { - dir, err := homeDir() - if err != nil { - return "", err + var dir string + if cd := os.Getenv("PACKER_CONFIG_DIR"); cd != "" { + log.Printf("Detected config directory from env var: %s", cd) + dir = cd + } else { + homedir, err := homeDir() + if err != nil { + return "", err + } + dir = homedir } return filepath.Join(dir, defaultConfigDir), nil diff --git a/website/source/docs/other/environment-variables.html.md b/website/source/docs/other/environment-variables.html.md index a9becdcf1..257336482 100644 --- a/website/source/docs/other/environment-variables.html.md +++ b/website/source/docs/other/environment-variables.html.md @@ -16,6 +16,8 @@ each can be found below: of the configuration file is basic JSON. See the [core configuration page](/docs/other/core-configuration.html). +- `PACKER_CONFIG_DIR` - The location of the `.packer.d` config directory + - `PACKER_LOG` - Setting this to any value other than "" (empty string) or "0" will enable the logger. See the [debugging page](/docs/other/debugging.html).