|
|
|
|
@ -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,7 +384,16 @@ 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
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (p *Provisioner) cleanupRemoteFile(path string, comm packer.Communicator) error {
|
|
|
|
|
|