provisioner/shell: set -e on the shebang itself

This commit is contained in:
Mitchell Hashimoto 2015-06-11 17:19:23 -04:00
parent 952077ccb0
commit 3ed73852be
2 changed files with 4 additions and 3 deletions

View File

@ -94,7 +94,7 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
}
if p.config.InlineShebang == "" {
p.config.InlineShebang = "/bin/sh"
p.config.InlineShebang = "/bin/sh -e"
}
if p.config.RawStartRetryTimeout == "" {
@ -184,7 +184,6 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
// Write our contents to it
writer := bufio.NewWriter(tf)
writer.WriteString(fmt.Sprintf("#!%s\n", p.config.InlineShebang))
writer.WriteString("set -e\n")
for _, command := range p.config.Inline {
if _, err := writer.WriteString(command + "\n"); err != nil {
return fmt.Errorf("Error preparing shell script: %s", err)

View File

@ -66,8 +66,10 @@ Optional parameters:
* `inline_shebang` (string) - The
[shebang](http://en.wikipedia.org/wiki/Shebang_%28Unix%29) value to use when
running commands specified by `inline`. By default, this is `/bin/sh`.
running commands specified by `inline`. By default, this is `/bin/sh -e`.
If you're not using `inline`, then this configuration has no effect.
**Important:** If you customize this, be sure to include something like
the `-e` flag, otherwise individual steps failing won't fail the provisioner.
* `remote_path` (string) - The path where the script will be uploaded to
in the machine. This defaults to "/tmp/script.sh". This value must be