Merge pull request #5043 from hashicorp/fix5031

Revert "Universally provide POSIX semantics for the `shell` provision…
This commit is contained in:
Matthew Hooker 2017-06-21 16:36:44 -07:00 committed by GitHub
commit c4569127e4
2 changed files with 9 additions and 6 deletions

View File

@ -101,7 +101,7 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
}
if p.config.ExecuteCommand == "" {
p.config.ExecuteCommand = "chmod +x {{.Path}}; env {{.Vars}} {{.Path}}"
p.config.ExecuteCommand = "chmod +x {{.Path}}; {{.Vars}} {{.Path}}"
}
if p.config.ExpectDisconnect == nil {

View File

@ -66,7 +66,7 @@ Optional parameters:
as well, which are covered in the section below.
- `execute_command` (string) - The command to use to execute the script. By
default this is `chmod +x {{ .Path }}; env {{ .Vars }} {{ .Path }}`. The value
default this is `chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}`. The value
of this is treated as [configuration
template](/docs/templates/engine.html). There are two
available variables: `Path`, which is the path to the script to run, and
@ -126,15 +126,18 @@ is being piped in with the value of `packer`.
By setting the `execute_command` to this, your script(s) can run with root
privileges without worrying about password prompts.
### `execute_command` Example
### FreeBSD Example
The following contrived example shows how to pass environment variables and
change the permissions of the script to be executed:
FreeBSD's default shell is `tcsh`, which deviates from POSIX semantics. In order
for packer to pass environment variables you will need to change the
`execute_command` to:
``` text
chmod +x {{ .Path }}; chmod 0700 {{ .Path}}; env {{ .Vars }} {{ .Path }}
chmod +x {{ .Path }}; env {{ .Vars }} {{ .Path }}
```
Note the addition of `env` before `{{ .Vars }}`.
## Default Environmental Variables
In addition to being able to specify custom environmental variables using the