X Tutup
Skip to content

Commit cf0aee9

Browse files
committed
support specifying swarm image and docker versions
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
1 parent 3cd44ec commit cf0aee9

File tree

10 files changed

+22
-12
lines changed

10 files changed

+22
-12
lines changed

commands/commands.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,12 @@ var sharedCreateFlags = []cli.Flag{
166166
),
167167
Value: "none",
168168
},
169+
cli.StringFlag{
170+
Name: "engine-install-url",
171+
Usage: "Custom URL to use for engine installation",
172+
Value: "https://get.docker.com",
173+
EnvVar: "MACHINE_DOCKER_INSTALL_URL",
174+
},
169175
cli.StringSliceFlag{
170176
Name: "engine-opt",
171177
Usage: "Specify arbitrary flags to include with the created engine in the form flag=value",
@@ -194,6 +200,12 @@ var sharedCreateFlags = []cli.Flag{
194200
Name: "swarm",
195201
Usage: "Configure Machine with Swarm",
196202
},
203+
cli.StringFlag{
204+
Name: "swarm-image",
205+
Usage: "Specify Docker image to use for Swarm",
206+
Value: "swarm:latest",
207+
EnvVar: "MACHINE_SWARM_IMAGE",
208+
},
197209
cli.BoolFlag{
198210
Name: "swarm-master",
199211
Usage: "Configure Machine to be a Swarm master",

commands/create.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,11 @@ func cmdCreate(c *cli.Context) {
7575
RegistryMirror: c.StringSlice("engine-registry-mirror"),
7676
StorageDriver: c.String("engine-storage-driver"),
7777
TlsVerify: true,
78+
InstallURL: c.String("engine-install-url"),
7879
},
7980
SwarmOptions: &swarm.SwarmOptions{
8081
IsSwarm: c.Bool("swarm"),
82+
Image: c.String("swarm-image"),
8183
Master: c.Bool("swarm-master"),
8284
Discovery: c.String("swarm-discovery"),
8385
Address: c.String("swarm-addr"),

libmachine/engine/engine.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ type EngineOptions struct {
1515
TlsKey string
1616
TlsVerify bool
1717
RegistryMirror []string
18+
InstallURL string
1819
}

libmachine/provision/boot2docker.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,6 @@ func (provisioner *Boot2DockerProvisioner) Provision(swarmOptions swarm.SwarmOpt
188188
return err
189189
}
190190

191-
if err := installDockerGeneric(provisioner); err != nil {
192-
return err
193-
}
194-
195191
ip, err := provisioner.GetDriver().GetIP()
196192
if err != nil {
197193
return err

libmachine/provision/configure_swarm.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,11 @@ func configureSwarm(p Provisioner, swarmOptions swarm.SwarmOptions, authOptions
7474
Port: port,
7575
AuthOptions: authOptions,
7676
SwarmOptions: swarmOptions,
77-
SwarmImage: swarm.DockerImage,
77+
SwarmImage: swarmOptions.Image,
7878
}
7979

8080
// First things first, get the swarm image.
81-
if _, err := p.SSHCommand(fmt.Sprintf("sudo docker pull %s", swarm.DockerImage)); err != nil {
81+
if _, err := p.SSHCommand(fmt.Sprintf("sudo docker pull %s", swarmOptions.Image)); err != nil {
8282
return err
8383
}
8484

libmachine/provision/debian.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func (provisioner *DebianProvisioner) Provision(swarmOptions swarm.SwarmOptions,
128128
}
129129

130130
log.Debug("installing docker")
131-
if err := installDockerGeneric(provisioner); err != nil {
131+
if err := installDockerGeneric(provisioner, engineOptions.InstallURL); err != nil {
132132
return err
133133
}
134134

libmachine/provision/ubuntu.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ func (provisioner *UbuntuProvisioner) Provision(swarmOptions swarm.SwarmOptions,
113113
}
114114
}
115115

116-
if err := installDockerGeneric(provisioner); err != nil {
116+
if err := installDockerGeneric(provisioner, engineOptions.InstallURL); err != nil {
117117
return err
118118
}
119119

libmachine/provision/utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ type DockerOptions struct {
2020
EngineOptionsPath string
2121
}
2222

23-
func installDockerGeneric(p Provisioner) error {
23+
func installDockerGeneric(p Provisioner, baseURL string) error {
2424
// install docker - until cloudinit we use ubuntu everywhere so we
2525
// just install it using the docker repos
26-
if output, err := p.SSHCommand("if ! type docker; then curl -sSL https://get.docker.com | sh -; fi"); err != nil {
26+
if output, err := p.SSHCommand(fmt.Sprintf("if ! type docker; then curl -sSL %s | sh -; fi", baseURL)); err != nil {
2727
return fmt.Errorf("error installing docker: %s\n", output)
2828
}
2929

libmachine/swarm/swarm.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package swarm
22

33
const (
4-
DockerImage = "swarm:latest"
54
DiscoveryServiceEndpoint = "https://discovery-stage.hub.docker.com/v1"
65
)
76

@@ -11,6 +10,7 @@ type SwarmOptions struct {
1110
Discovery string
1211
Master bool
1312
Host string
13+
Image string
1414
Strategy string
1515
Heartbeat int
1616
Overcommit float64

libmachine/swarm/swarm_options.go

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)
X Tutup