mirror of
https://github.com/docker/docs.git
synced 2026-11-05 00:14:17 +03:00
googlecomputengine: add template for script
Signed-off-by: Johan Euphrosine <proppy@google.com>
This commit is contained in:
committed by
Dan Lorenc
parent
17536555b1
commit
941ddb1a91
@@ -1,8 +1,11 @@
|
||||
package googlecomputeengine
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
"text/template"
|
||||
"time"
|
||||
|
||||
log "github.com/Sirupsen/logrus"
|
||||
@@ -24,22 +27,27 @@ type ComputeUtil struct {
|
||||
}
|
||||
|
||||
const (
|
||||
apiURL = "https://www.googleapis.com/compute/v1/projects/"
|
||||
imageName = "https://www.googleapis.com/compute/v1/projects/google-containers/global/images/container-vm-v20141016"
|
||||
firewallRule = "docker-machines"
|
||||
port = "2376"
|
||||
firewallTargetTag = "docker-machine"
|
||||
apiURL = "https://www.googleapis.com/compute/v1/projects/"
|
||||
imageName = "https://www.googleapis.com/compute/v1/projects/google-containers/global/images/container-vm-v20141016"
|
||||
firewallRule = "docker-machines"
|
||||
port = "2376"
|
||||
firewallTargetTag = "docker-machine"
|
||||
dockerStartCommand = "sudo service docker start"
|
||||
dockerStopCommand = "sudo service docker stop"
|
||||
)
|
||||
|
||||
const (
|
||||
stopDocker = "sudo service docker stop"
|
||||
makeKeysDir = "sudo mkdir -p /.docker/authorized-keys.d/"
|
||||
setKeysDirPermissions = "sudo chown -R %v /.docker"
|
||||
waitForDockerToStop = "while [ -e /var/run/docker.pid ]; do sleep 1; done"
|
||||
setDockerOpts = "sudo sed -i 's/DOCKER_OPTS=.*/DOCKER_OPTS=\"--auth=identity -H unix:\\/\\/\\/var\\/run\\/docker.sock -H 0.0.0.0:2376\"/g' /etc/default/docker"
|
||||
downloadDocker = "sudo wget https://bfirsh.s3.amazonaws.com/docker/docker-1.3.1-dev-identity-auth -O /usr/bin/docker && sudo chmod +x /usr/bin/docker"
|
||||
var (
|
||||
dockerUpgradeScriptTemplate = template.Must(template.New("upgrade-docker-script").Parse(
|
||||
`sudo mkdir -p /.docker/authorized-keys.d/
|
||||
sudo chown -R {{ .Username }} /.docker
|
||||
while [ -e /var/run/docker.pid ]; do sleep 1; done
|
||||
sudo sed -i 's/DOCKER_OPTS=.*/DOCKER_OPTS=\"--auth=identity -H unix:\\/\\/\\/var\\/run\\/docker.sock -H 0.0.0.0:2376\"/g' /etc/default/docker
|
||||
sudo wget https://bfirsh.s3.amazonaws.com/docker/docker-1.3.1-dev-identity-auth -O /usr/bin/docker && sudo chmod +x /usr/bin/docker
|
||||
`))
|
||||
)
|
||||
|
||||
const ()
|
||||
|
||||
// NewComputeUtil creates and initializes a ComputeUtil.
|
||||
func newComputeUtil(driver *Driver) (*ComputeUtil, error) {
|
||||
service, err := newGCEService(driver.storePath)
|
||||
@@ -220,22 +228,22 @@ func (c *ComputeUtil) updateDocker(d *Driver) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("error retrieving ip: %v", err)
|
||||
}
|
||||
commands := []string{
|
||||
stopDocker,
|
||||
// The user will need to copy their key to this directory.
|
||||
makeKeysDir,
|
||||
fmt.Sprintf(setKeysDirPermissions, d.UserName),
|
||||
// Wait for docker to actually stop before modifying the config.
|
||||
waitForDockerToStop,
|
||||
setDockerOpts,
|
||||
downloadDocker}
|
||||
if c.executeCommands([]string{dockerStopCommand}, ip, d.sshKeyPath); err != nil {
|
||||
return err
|
||||
}
|
||||
var scriptBuf bytes.Buffer
|
||||
|
||||
if err := dockerUpgradeScriptTemplate.Execute(&scriptBuf, d); err != nil {
|
||||
return fmt.Errorf("error expanding upgrade script template: %v", err)
|
||||
}
|
||||
commands := strings.Split(scriptBuf.String(), "\n")
|
||||
if err := c.executeCommands(commands, ip, d.sshKeyPath); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := drivers.AddPublicKeyToAuthorizedHosts(d, "/.docker/authorized-keys.d"); err != nil {
|
||||
return err
|
||||
}
|
||||
return c.executeCommands([]string{"sudo service docker start"}, ip, d.sshKeyPath)
|
||||
return c.executeCommands([]string{dockerStartCommand}, ip, d.sshKeyPath)
|
||||
}
|
||||
|
||||
func (c *ComputeUtil) executeCommands(commands []string, ip, sshKeyPath string) error {
|
||||
|
||||
Reference in New Issue
Block a user