Merge pull request #6913 from ofosos/pause-after-provisioner

Add PauseAfter option to shell provisioner
This commit is contained in:
Adrien Delorme 2018-10-30 13:27:04 +01:00 committed by GitHub
commit 5e79936b9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 0 deletions

View File

@ -45,6 +45,11 @@ type Config struct {
// your command(s) are executed.
Vars []string `mapstructure:"environment_vars"`
// A duration of how long to pause after the provisioner
RawPauseAfter string `mapstructure:"pause_after"`
PauseAfter time.Duration
// Write the Vars to a file and source them from there rather than declaring
// inline
UseEnvVarFile bool `mapstructure:"use_env_var_file"`
@ -189,6 +194,14 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
}
}
if p.config.RawPauseAfter != "" {
p.config.PauseAfter, err = time.ParseDuration(p.config.RawPauseAfter)
if err != nil {
errs = packer.MultiErrorAppend(
errs, fmt.Errorf("Failed parsing pause_after: %s", err))
}
}
if errs != nil && len(errs.Errors) > 0 {
return errs
}
@ -371,6 +384,14 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
}
}
if p.config.RawPauseAfter != "" {
ui.Say(fmt.Sprintf("Pausing %s after this provisioner...", p.config.PauseAfter))
select {
case <-time.After(p.config.PauseAfter):
return nil
}
}
return nil
}

View File

@ -117,6 +117,9 @@ Optional parameters:
exists in order to deal with times when SSH may restart, such as a system
reboot. Set this to a higher value if reboots take a longer amount of time.
- `pause_after` (string) - Wait the amount of time after provisioning a shell
script, this pause be taken if all previous steps were successful.
## Execute Command Example
To many new users, the `execute_command` is puzzling. However, it provides an