Allow rancheros to select a different Docker engine version using --engine-install-url

Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au>
This commit is contained in:
Sven Dowideit
2017-05-10 12:31:12 +10:00
parent e94ccb6f10
commit 2ea653b5e3
6 changed files with 21 additions and 18 deletions

View File

@@ -86,6 +86,9 @@ func (d *BaseDriver) SetSwarmConfigFromFlags(flags DriverOptions) {
}
func EngineInstallURLFlagSet(flags DriverOptions) bool {
engineInstallURLFlag := flags.String("engine-install-url")
return engineInstallURLFlag != DefaultEngineInstallURL && engineInstallURLFlag != ""
return EngineInstallURLSet(flags.String("engine-install-url"))
}
func EngineInstallURLSet(url string) bool {
return url != DefaultEngineInstallURL && url != ""
}

View File

@@ -93,6 +93,8 @@ func (provisioner *RancherProvisioner) Package(name string, action pkgaction.Pac
}
func (provisioner *RancherProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error {
log.Debugf("Running RancherOS provisioner on %s", provisioner.Driver.GetMachineName())
provisioner.SwarmOptions = swarmOptions
provisioner.AuthOptions = authOptions
provisioner.EngineOptions = engineOptions
@@ -116,6 +118,11 @@ func (provisioner *RancherProvisioner) Provision(swarmOptions swarm.Options, aut
}
}
log.Debugf("Selecting docker engine: %s", engineOptions.InstallURL)
if err := selectDocker(provisioner, engineOptions.InstallURL); err != nil {
return err
}
log.Debugf("Preparing certificates")
provisioner.AuthOptions = setRemoteAuthOptions(provisioner)
@@ -231,3 +238,12 @@ func (provisioner *RancherProvisioner) getLatestISOURL() (string, error) {
return "", fmt.Errorf("Failed to find current version")
}
func selectDocker(p Provisioner, baseURL string) error {
// TODO: detect if its a cloud-init, or a ros setting - and use that..
if output, err := p.SSHCommand(fmt.Sprintf("wget -O- %s | sh -", baseURL)); err != nil {
return fmt.Errorf("error selecting docker: (%s) %s", err, output)
}
return nil
}