func runProvisionScript(script, host string, progressWriter io.Writer) error { params := sshinit.ConfigureParams{ Host: "ubuntu@" + host, ProgressWriter: progressWriter, } return sshinit.RunConfigureScript(script, params) }
func ConfigureMachine(ctx environs.BootstrapContext, client ssh.Client, host string, instanceConfig *instancecfg.InstanceConfig) error { // Bootstrap is synchronous, and will spawn a subprocess // to complete the procedure. If the user hits Ctrl-C, // SIGINT is sent to the foreground process attached to // the terminal, which will be the ssh subprocess at this // point. For that reason, we do not call StopInterruptNotify // until this function completes. cloudcfg, err := cloudinit.New(instanceConfig.Series) if err != nil { return errors.Trace(err) } // Set packaging update here cloudcfg.SetSystemUpdate(instanceConfig.EnableOSRefreshUpdate) cloudcfg.SetSystemUpgrade(instanceConfig.EnableOSUpgrade) udata, err := cloudconfig.NewUserdataConfig(instanceConfig, cloudcfg) if err != nil { return err } if err := udata.ConfigureJuju(); err != nil { return err } configScript, err := cloudcfg.RenderScript() if err != nil { return err } script := shell.DumpFileOnErrorScript(instanceConfig.CloudInitOutputLog) + configScript return sshinit.RunConfigureScript(script, sshinit.ConfigureParams{ Host: "ubuntu@" + host, Client: client, Config: cloudcfg, ProgressWriter: ctx.GetStderr(), Series: instanceConfig.Series, }) }