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
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue