mirror of https://github.com/docker/docs.git
Added support for identity auth in Azure driver
Added support for identity auth in Azure driver Signed-off-by: Ruslan Gabitov <ruslan.gabitov@live.com>
This commit is contained in:
parent
05ab691caf
commit
3df09689e6
|
@ -224,6 +224,87 @@ func (driver *Driver) Create() error {
|
|||
return err
|
||||
}
|
||||
|
||||
if err:= driver.hackForIdentityAuth(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (driver *Driver) hackForIdentityAuth() error {
|
||||
|
||||
log.Debugf("HACK: Downloading version of Docker with identity auth...")
|
||||
|
||||
numberOfRetries := 3
|
||||
if err:= driver.runSSHCommand("sudo stop docker", numberOfRetries); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err:= driver.runSSHCommand("sudo bash -c \"curl -sS https://bfirsh.s3.amazonaws.com/docker/docker-1.3.1-dev-identity-auth > /usr/bin/docker\"", numberOfRetries); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Debugf("Updating /etc/default/docker to use identity auth...")
|
||||
|
||||
cmdString := fmt.Sprintf(`sudo bash -c 'cat <<EOF > /etc/default/docker
|
||||
export DOCKER_OPTS="--auth=identity --host=tcp://0.0.0.0:%v"
|
||||
EOF'`, driver.DockerPort)
|
||||
if err:= driver.runSSHCommand(cmdString, numberOfRetries); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Debugf("Adding key to authorized-keys.d...")
|
||||
|
||||
if err := driver.addPublicKeyToAuthorizedHosts("/tmp/.docker/authorized-keys.d", numberOfRetries); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err:= driver.runSSHCommand("sudo cp -a /tmp/.docker/ /", numberOfRetries); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err:= driver.runSSHCommand("rm -r /tmp/.docker/", numberOfRetries); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err:= driver.runSSHCommand("sudo start docker", numberOfRetries); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (driver *Driver) addPublicKeyToAuthorizedHosts(authorizedKeysPath string, retries int) error {
|
||||
if err := drivers.AddPublicKeyToAuthorizedHosts(driver, authorizedKeysPath ); err != nil {
|
||||
if err.Error() == "exit status 255" {
|
||||
if retries == 0 {
|
||||
return err
|
||||
}
|
||||
return driver.addPublicKeyToAuthorizedHosts(authorizedKeysPath, retries -1)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (driver *Driver) runSSHCommand(command string, retries int) error {
|
||||
cmd, err := driver.GetSSHCommand(command)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := cmd.Run(); err != nil {
|
||||
if err.Error() == "exit status 255" {
|
||||
if retries == 0 {
|
||||
return err
|
||||
}
|
||||
return driver.runSSHCommand(command, retries -1)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue