diff --git a/drivers/hyperv/hyperv.go b/drivers/hyperv/hyperv.go index bd7235d9..fc296f4f 100644 --- a/drivers/hyperv/hyperv.go +++ b/drivers/hyperv/hyperv.go @@ -6,8 +6,6 @@ import ( "os" "time" - "errors" - "github.com/docker/machine/libmachine/drivers" "github.com/docker/machine/libmachine/log" "github.com/docker/machine/libmachine/mcnflag" @@ -94,9 +92,6 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag { } func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - if drivers.EngineInstallURLFlagSet(flags) { - return errors.New("--engine-install-url cannot be used with the hyperv driver, use --hyperv-boot2docker-url instead") - } d.Boot2DockerURL = flags.String("hyperv-boot2docker-url") d.VSwitch = flags.String("hyperv-virtual-switch") d.DiskSize = flags.Int("hyperv-disk-size") diff --git a/drivers/virtualbox/virtualbox.go b/drivers/virtualbox/virtualbox.go index 0313e5d6..a7b998b6 100644 --- a/drivers/virtualbox/virtualbox.go +++ b/drivers/virtualbox/virtualbox.go @@ -228,9 +228,6 @@ func (d *Driver) GetURL() (string, error) { } func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - if drivers.EngineInstallURLFlagSet(flags) { - return errors.New("--engine-install-url cannot be used with the virtualbox driver, use --virtualbox-boot2docker-url instead") - } d.CPU = flags.Int("virtualbox-cpu-count") d.Memory = flags.Int("virtualbox-memory") d.DiskSize = flags.Int("virtualbox-disk-size") diff --git a/drivers/vmwarefusion/fusion_darwin.go b/drivers/vmwarefusion/fusion_darwin.go index d1e62f88..c56f5330 100644 --- a/drivers/vmwarefusion/fusion_darwin.go +++ b/drivers/vmwarefusion/fusion_darwin.go @@ -18,8 +18,6 @@ import ( "text/template" "time" - "errors" - "github.com/docker/machine/libmachine/drivers" "github.com/docker/machine/libmachine/log" "github.com/docker/machine/libmachine/mcnflag" @@ -145,9 +143,6 @@ func (d *Driver) DriverName() string { } func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - if drivers.EngineInstallURLFlagSet(flags) { - return errors.New("--engine-install-url cannot be used with the vmwarefusion driver, use --vmwarefusion-boot2docker-url instead") - } d.Memory = flags.Int("vmwarefusion-memory-size") d.CPU = flags.Int("vmwarefusion-cpu-count") d.DiskSize = flags.Int("vmwarefusion-disk-size") diff --git a/drivers/vmwarevsphere/vsphere.go b/drivers/vmwarevsphere/vsphere.go index 1a8864df..ff532f2a 100644 --- a/drivers/vmwarevsphere/vsphere.go +++ b/drivers/vmwarevsphere/vsphere.go @@ -183,9 +183,6 @@ func (d *Driver) DriverName() string { } func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - if drivers.EngineInstallURLFlagSet(flags) { - return errors.New("--engine-install-url cannot be used with the vmwarevsphere driver, use --vmwarevsphere-boot2docker-url instead") - } d.SSHUser = "docker" d.SSHPort = 22 d.CPU = flags.Int("vmwarevsphere-cpu-count") diff --git a/libmachine/drivers/base.go b/libmachine/drivers/base.go index 040ea2a3..4ed06643 100644 --- a/libmachine/drivers/base.go +++ b/libmachine/drivers/base.go @@ -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 != "" } diff --git a/libmachine/provision/rancheros.go b/libmachine/provision/rancheros.go index 1ff47853..97557c26 100644 --- a/libmachine/provision/rancheros.go +++ b/libmachine/provision/rancheros.go @@ -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 +}