Machine: Controlador de Azure: versión del administrador de recursos

Creado en 5 ene. 2016  ·  69Comentarios  ·  Fuente: docker/machine

Creo que tengo razón al decir que el soporte actual para docker-machine en Azure usa el modelo de implementación clásico. Sería genial también admitir el modelo Resource Manager (ya que eso es lo que recomienda MS para nuevas implementaciones).

driveazure kinenhancement

Todos 69 comentarios

: +1:

+1

+1

Hay planes para mover el proveedor de Azure de la máquina acoplable para usar Azure Resource Manager; consulte el n. ° 496

@lizrice Actualmente

Esa es una excelente noticia @ahmetalpbalkan :-)

+1

¡Esto sera muy útil! Gracias por trabajar activamente en ello.

Definitivamente necesito esto. También debe evitar el uso de certificados para autenticarse, a menos que use una entidad de servicio de Azure Active Directory. ¿Algún progreso @ahmetalpbalkan?

Salud,
Trevor Sullivan

@ pcgeek86 no haremos la mierda del principal de servicio. El proceso de autenticación se verá exactamente como la autenticación CLI multiplataforma de Azure (comando "azure login" ). Cada 2 semanas le pedirá que abra una ventana del navegador y haga clic en un botón para autorizar la aplicación.

@ahmetalpbalkan Excelente, entonces tendrás el parámetro --username también, como azure-clil?

@ pcgeek86 , no. La CLI de Azure no requiere el parámetro de nombre de usuario. Está ahí para compatibilidad con versiones anteriores.

@ahmetalpbalkan No dije requerido. El parámetro --username es lo que le permite especificar el nombre de usuario de Azure Active Directory (AAD). ¿Cómo es esta "compatibilidad con versiones anteriores"? ¿Qué propones para la implementación final?

La autenticación basada en certificados de Azure Service Management (ASM) es la "compatibilidad con versiones anteriores".

@ pcgeek86 hmm, nunca me di cuenta de que se usa para los nombres de usuario de AAD. Cuando va a https://aka.ms/devicelogin , ¿le permite especificar su nombre de usuario de AAD allí? Si la misma tarea se puede hacer sin azure login (sin --username ), pretendo mantenerlo así.

@ahmetalpbalkan Probablemente necesite estar en modo ARM ( azure config arm ) para poder usar la autenticación AAD con ARM. Realmente no uso el "modo" ASM muy a menudo.

Sí, puede usar el nombre de usuario de AAD con https://aka.ms/devicelogin. Sin embargo, prefiero evitar salir a un navegador y en su lugar especificar el nombre de usuario con --username . Funciona mejor en escenarios de solo texto. :)

Si la misma tarea se puede hacer sin inicio de sesión de azure (sin --username), tengo la intención de mantenerlo así.

Entonces, solo para asegurarme de que lo entiendo correctamente, ¿tiene la intención de solicitar al usuario que use un navegador web para completar la autenticación, en lugar de escribir su contraseña en la línea de comando?

Con una cuenta que requiere 2fa, tendrá que realizar la autenticación de cualquier forma. No tengo claro que esto sea una gran optimización para el caso 2fa.

@squillace Para usuarios de autenticación multifactor, claro. Pero, ¿por qué atender a un solo grupo de usuarios? Supongo que la mayoría no usará MFA de todos modos.

En ese punto, simplemente se lo está poniendo más difícil para todos, y ¿no va a enojar a la gente al obligarlos a usar un navegador web para autenticar una herramienta de línea de comandos?

De hecho, ¿por qué no dar un paso más y admitir MFA desde la línea de comandos de alguna manera?

No debe recopilar nombres de usuario y contraseñas fuera de la pantalla de inicio de sesión normal de AAD. Es una práctica insegura y mala. Además, técnicamente hay demasiados escenarios que cubrir para que realmente funcione. 2FA no es posible sin abrir un navegador, por ejemplo, ADFS local, llavero seguro, autenticación de tarjeta inteligente, etc.

No quiero atender a un solo grupo, sino que el escenario básico debe cubrir a todos.

Enviado desde Outlook Mo bilehttps: //aka.ms/blhgte

El jueves, 25 de febrero de 2016 a las 10:11 a. M. -0800, "Trevor Sullivan" < [email protected] [email protected] > escribió:

@squil lacehttps: //github.com/squillace Para usuarios de autenticación de múltiples factores, claro. Pero, ¿por qué atender a un solo grupo de usuarios? Supongo que la mayoría no usará MFA de todos modos.

Responda a este correo electrónico directamente o véalo en Gi

@LoungeFlyZ Entonces, ¿estás diciendo que la CLI azure xPlat debería eliminar su parámetro --username ? Eso sería un cambio significativo e importante, pero probablemente posible.

Probablemente sí. Me sorprende que todavía lo tengan ... pero entiendo por qué.

@LoungeFlyZ ¿Qué pasa con los usuarios de la línea de comandos? ¿Crees que esto les perjudicará?

@ pcgeek86 Sí, por supuesto. Es mucho menos conveniente, lo entiendo. Pero tener cualquier herramienta que recopile su nombre de usuario y contraseña es un desastre a la espera de suceder.

@LoungeFlyZ Yo

@ pcgeek86 Le estoy enviando un mensaje binario a su correo electrónico, inténtelo y lmk si lo encuentra poco práctico.

Hola amigos, finalmente estamos cerca de tener un nuevo controlador de Azure. Estamos puliendo algunas cosas y enviaré una solicitud de extracción muy pronto. Mientras tanto, puede probar la nueva versión antes de que salga y dar su opinión. Descargue a continuación:

probando el darwin ahora .. limpio. Agradable.

Ahmet, muy, muy limpio.

~ / workspace / ahmet-machine ‹ruby-2.2.1› $ ld create -d azure \ 1 ↵
- id-suscripción-azure\
--azure-ssh-user ops \
--azure-resource-group ahmetsmachine \
--azure-location eastus \
ahmetsmachine
Ejecutando comprobaciones de creación previa ...
(ahmetsmachine) Microsoft Azure: para iniciar sesión, use un navegador web para abrir la página https://aka.ms/devicelogin. Inserte el códigoautenticar.
(ahmetsmachine) Verificaciones de creación previa de la máquina completadas.
Creando máquina ...
(ahmetsmachine) Consultando el grupo de recursos existente ... name = "ahmetsmachine"
(ahmetsmachine) Creando grupo de recursos ... location = "eastus" name = "ahmetsmachine"
(ahmetsmachine) Creando un conjunto de disponibilidad ... name = "docker-machine"
(ahmetsmachine) Creando grupo de seguridad de red ... nombre = "ahmetsmachine-firewall" location = "eastus"
(ahmetsmachine) Consultando si la red virtual ya existe ... name = "docker-machine-vnet" location = "eastus"
(ahmetsmachine) Creando subred ... cidr = "" name = "docker-machine" vnet = "docker-machine-vnet"
(ahmetsmachine) Creando una dirección IP pública ... name = "ahmetsmachine-ip"
(ahmetsmachine) Creando interfaz de red ... name = "ahmetsmachine-nic"
(ahmetsmachine) Creando una cuenta de almacenamiento "" en eastus
(ahmetsmachine) Creando máquina virtual ... name = "ahmetsmachine" location = "eastus" size = "Standard_A2" username = "ops" osImage = " canonical: UbuntuServer : 14.04.3- LTS: latest "
Esperando a que la máquina esté funcionando, esto puede tardar unos minutos ...
Detectando el sistema operativo de la instancia creada ...
Esperando que SSH esté disponible ...
Detectando el aprovisionador ...
Aprovisionamiento con ubuntu (upstart) ...
Instalación de Docker ...
Copiando certificados al directorio de la máquina local ...
Copiando certificados a la máquina remota ...
Establecer la configuración de Docker en el demonio remoto ...
Comprobando la conexión a Docker ...
¡Docker está en funcionamiento!
Para ver cómo conectar su cliente Docker al motor Docker que se ejecuta en esta máquina virtual, ejecute:docker-machine-Darwin-x86_64 env ahmetsmachine

Probaré las versiones de Windows y Linux ahora. Agradable. La información apareció de inmediato. También me gusta mucho su entorno de red básico y sus opciones de puertos. ¡Gracias!

Actualmente hay un problema en Windows, no se autentica. Sugiero probar con otras plataformas por ahora. ¡Gracias @squillace!

Bien, haré la familia Debian.

Sí, el error en Windows está relacionado con la copia del token en un caché de token. Envió los detalles a @ahmetalpbalkan esta noche.

Salud,
Trevor Sullivan

funciona perfectamente en menta 17.3.

@ pcgeek86 , pruebe esta nueva compilación para Windows: http://cl.ly/3k2d0g2B3j0o/docker_machine_azure_rc2.zip, el problema debería solucionarse ahora. Simplemente funcionó para mí. (Aunque todavía es inestable, pronto los arreglaremos en Azure SDK y los importaremos aquí. Seguiré proporcionando compilaciones aquí a medida que avancemos).

Pruebe la autenticación con todo tipo de tipos de cuentas extrañas (cuenta de Microsoft, AAD ...) si las tiene. Este enfoque de autenticación solo funciona con mi cuenta AD multifactor, así como con mi cuenta personal. Aprecio sus comentarios al respecto, ¡siento que podemos hacerlo bien en el primer intento! :sonreír:

No lo intenté con personal; Lo haré ahora.

Intenté con el binario anteriormente en este número en OS X y obtuve:

docker-machine-azure create -d azure --azure-location "North Europe"  --azure-resource-group "career-planner" --azure-subscription-id {ID} azure
Running pre-create checks...
(azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code DRHSTFLSD to authenticate.
(azure) Completed machine pre-create checks.
Creating machine...
(azure) Querying existing resource group...  name="career-planner"
(azure) Resource group "career-planner" already exists.
(azure) Creating availability set...  name="docker-machine"
(azure) Creating network security group...  name="azure-firewall" location="North Europe"
(azure) Querying if virtual network already exists...  name="docker-machine-vnet" location="North Europe"
(azure) Creating subnet...  name="docker-machine" vnet="docker-machine-vnet" cidr="192.168.0.0/16"
(azure) Creating public IP address...  name="azure-ip"
(azure) Creating network interface...  name="azure-nic"
(azure) Creating storage account "vhdsxfxg6xxswwqjih00e7co" in North Europe
(azure) Creating Virtual Machine...  name="azure" location="North Europe" size="Standard_A2" username="ubuntu" osImage="canonical:UbuntuServer:14.04.3-LTS:latest"
Waiting for machine to be running, this may take a few minutes...
Error creating machine: Error waiting for machine to be running: Maximum number of retries (60) exceeded

aunque creo que lo hizo creando todos los recursos.

@buckett Gracias, se trata del último problema que estamos tratando de solucionar en azure go sdk. Actualmente no estamos esperando los recursos creados hasta que se completen correctamente.

Antes de enviar la solicitud de extracción a este repositorio, planeo crear unas 1,000 máquinas para ver qué tan confiable es. Ya somos ecológicos en las pruebas funcionales, pero hay algunas irregularidades como mencioné anteriormente.

@buckett aquí hay una nueva versión con un montón de correcciones. Actualmente comencé a probarlo y parece estar bien (hasta ahora, todas las fallas que obtuve no han estado relacionadas con Azure, problemas de apt repo flakines, etc.).

Aquí está el paquete binario para plataformas compatibles: enlace http://cl.ly/fKvS

Espero enviar un PR a la máquina con esta versión.

Descargué la nueva compilación e intenté ver qué máquinas tenía:

$ docker-machine-azure ls
(azure) Obtained access_token or refresh_token is stale. Please reauthenticate.
(azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code {removed} to authenticate.
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
azure              azure        Timeout                                                 
default   *        virtualbox   Running   tcp://192.168.99.101:2376           v1.10.0   

pero luego, cuando intenté eliminar la instancia azul obsoleta, me pidieron que volviera a iniciar sesión:

$ docker-machine-azure rm azure
About to remove azure
Are you sure? (y/n): y
(azure) NOTICE: Please check Azure portal/CLI to make sure you have no leftover resources to avoid unexpected charges.
(azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code {removed} to authenticate.
(azure) Virtual Machine does not exist. Skipping.  name="azure"
(azure) Network Interface does not exist. Skipping.  name="azure-nic"
(azure) Public IP does not exist. Skipping.  name="azure-ip"
(azure) Network Security Group does not exist. Skipping.  name="azure-firewall"
(azure) Attempting to clean up Availability Set resource...  name="docker-machine"
(azure) Attempting to clean up Subnet resource...  name="docker-machine"
(azure) Attempting to clean up Virtual Network resource...  name="docker-machine-vnet"
Successfully removed azure

Cuando creé una nueva instancia azul, funcionó hasta cierto punto y luego se cayó:

$ docker-machine-azure create -d azure ....
[..snipped..]
Error creating machine: Error in driver during machine creation: Panic in the driver: runtime error: invalid memory address or nil pointer dereference
goroutine 52 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/debug/stack.go:24 +0x80
github.com/docker/machine/libmachine/drivers/rpc.(*StandardStack).Stack(0x2299078, 0x0, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:23 +0x29
github.com/docker/machine/libmachine/drivers/rpc.trapPanic(0xc82012ba28)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:129 +0x96
panic(0x11f78e0, 0xc82000a0f0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:426 +0x4e9
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageContainerURL(0xc820328780, 0xc8202c4468, 0x5, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:709 +0x3d
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageBlobURL(0xc820328780, 0xc8202c4468, 0x5, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:697 +0x5c
github.com/docker/machine/drivers/azure/azureutil.AzureClient.CreateVirtualMachine(0x16c0590, 0x10, 0x17fb460, 0x20, 0x18ea160, 0x35, 0x17fb4e0, 0x24, 0x17627a0, 0x1d, ...)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:446 +0x5f2
github.com/docker/machine/drivers/azure.(*Driver).Create.func10(0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:322 +0x20f
github.com/docker/machine/drivers/azure.(*Driver).Create(0xc8200c2a00, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:326 +0x461
github.com/docker/machine/libmachine/drivers/rpc.(*RPCServerDriver).Create(0xc82012d5a0, 0x2299078, 0x2299078, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:140 +0x7c
reflect.Value.call(0x108e980, 0x1518768, 0x13, 0x155ba18, 0x4, 0xc82012bed8, 0x3, 0x3, 0x0, 0x0, ...)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:435 +0x120d
reflect.Value.Call(0x108e980, 0x1518768, 0x13, 0xc82012bed8, 0x3, 0x3, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:303 +0xb1
net/rpc.(*service).call(0xc82016a1c0, 0xc82012e000, 0xc820158fd0, 0xc820087880, 0xc82012dcc0, 0xd7d040, 0x2299078, 0x16, 0xd7d040, 0x2299078, ...)
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:383 +0x1c2
created by net/rpc.(*Server).ServeCodec
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:477 +0x49d

La eliminación de la mitad de la máquina acoplable de configuración funcionó casi todo. Todo se eliminó, excepto la red virtual y la cuenta de almacenamiento (al verificar en https://portal.azure.com).

@buckett argh, no puedo creer que envié el enlace para una compilación anterior. Lo siento por eso. ¿Podría probar este: http://cl.ly/fKvS

La máquina virtual docker-machine --debug rm eso sería genial) pero la cuenta de almacenamiento no se eliminará. Es gratuito y también limpiamos los discos del sistema operativo que asignamos al quitarlos.

Probar con una nueva compilación: solo estaba eliminando una máquina y, a la mitad, obtuve:

Error removing host "azure": azure.ServicePrincipalToken:WithAuthorization 0 Failed to refresh Service Principal Token for request to https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/providers/Microsoft.Network/locations/northeurope/operations/33643d7c-82cc-40f4-8724-bd82de215338?api-version=2015-06-15 -- Original Error: Manually created ServicePrincipalToken does not contain secret material to retrieve a new access token.

El tiempo de espera de la nueva compilación en docker-machine ls para pegar el token de autenticación es un poco demasiado corto ya que no puedo abrir un navegador, copiar y pegar el token de autenticación y hacer clic para aceptarlo, iniciar sesión en el correcto cuenta y acepte los permisos.

Y cuando mi computadora portátil no se suspende a la mitad de la creación de la máquina, creó un nuevo host que ejecuta la ventana acoplable (magia, gracias,: pastel :). Recibí un error en la creación, pero pude ejecutar hello-world después de la creación.

Checking connection to Docker...
Error creating machine: Error checking the host: Error checking and/or regenerating the certs: There was an error validating certificates for host "13.69.192.88:2376": tls: DialWithDialer timed out
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

$ eval $(docker-machine-azure env azure)
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
03f4658f8b78: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest

Hello from Docker.
This message shows that your installation appears to be working correctly.

Después de ejecutar con éxito el contenedor hello-world, también regeneré los certificados y eso funcionó bien.

En un grupo de recursos limpio, la eliminación de la última máquina que ejecuta Docker no parece limpiar la red (aunque parece intentarlo):

(azure) Attempting to clean up Virtual Network resource...  name="docker-machine-vnet"
(azure) DBG | Azure request  method="GET" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Network/virtualnetworks/docker-machine-vnet?api-version=2015-06-15"
(azure) DBG | Azure response  status="200 OK" method="GET" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Network/virtualnetworks/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="626af1d8-3f4b-4915-9a8a-f7a0d4844c53"
(azure) DBG | Azure response  request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Network/virtualnetworks/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="626af1d8-3f4b-4915-9a8a-f7a0d4844c53" status="200 OK" method="GET"
(azure) DBG | Virtual Network does not have any attached dependent resource.  name="docker-machine-vnet"
(azure) Removing Virtual Network resource...  name="docker-machine-vnet"
(azure) DBG | Azure request  method="DELETE" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Compute/virtualMachines/docker-machine-vnet?api-version=2015-06-15"
(azure) DBG | Azure response  status="204 No Content" method="DELETE" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Compute/virtualMachines/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="8799a451-211e-4f7d-a9d7-52b2e702c5f5"
(azure) DBG | Azure response  status="204 No Content" method="DELETE" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Compute/virtualMachines/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="8799a451-211e-4f7d-a9d7-52b2e702c5f5"

Todo comenzó bien en Mac OS X. Luego, sucedió esto:

(azdh) Creating Virtual Machine...  name="azdh" location="westeurope" size="Standard_A2" username="ubuntu" osImage="canonical:UbuntuServer:14.04.3-LTS:latest"
Error creating machine: Error in driver during machine creation: Panic in the driver: runtime error: invalid memory address or nil pointer dereference
goroutine 90 [running]:

Aquí está el registro completo:

Trevors-MBP:bin trevorsullivan$ ./docker-machine-Darwin-x86_64 create --driver azure --azure-location westeurope --azure-subscription-id 1c9fd9f5-a2dc-4cc9-a73c-cab0ee4a95a1 --azure-resource-group CloudAcademyAutomation azdh
Running pre-create checks...
(azdh) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code EDPKYDZ2X to authenticate.
(azdh) Completed machine pre-create checks.
Creating machine...
(azdh) Querying existing resource group...  name="CloudAcademyAutomation"
(azdh) Resource group "CloudAcademyAutomation" already exists.
(azdh) Creating availability set...  name="docker-machine"
(azdh) Creating network security group...  name="azdh-firewall" location="westeurope"
(azdh) Querying if virtual network already exists...  location="westeurope" name="docker-machine-vnet"
(azdh) Creating subnet...  name="docker-machine" vnet="docker-machine-vnet" cidr="192.168.0.0/16"
(azdh) Creating public IP address...  name="azdh-ip"
(azdh) Creating network interface...  name="azdh-nic"
(azdh) Creating storage account "vhdsxej59xu1xauhx7kaqs2e" in westeurope
(azdh) Creating Virtual Machine...  name="azdh" location="westeurope" size="Standard_A2" username="ubuntu" osImage="canonical:UbuntuServer:14.04.3-LTS:latest"
Error creating machine: Error in driver during machine creation: Panic in the driver: runtime error: invalid memory address or nil pointer dereference
goroutine 90 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/debug/stack.go:24 +0x80
github.com/docker/machine/libmachine/drivers/rpc.(*StandardStack).Stack(0x2299078, 0x0, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:23 +0x29
github.com/docker/machine/libmachine/drivers/rpc.trapPanic(0xc8204a3a38)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:129 +0x96
panic(0x11f78e0, 0xc82000a0b0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:426 +0x4e9
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageContainerURL(0xc82025db80, 0xc8204d0118, 0x4, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:709 +0x3d
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageBlobURL(0xc82025db80, 0xc8204d0118, 0x4, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:697 +0x5c
github.com/docker/machine/drivers/azure/azureutil.AzureClient.CreateVirtualMachine(0x16c0590, 0x10, 0x17fb460, 0x20, 0x18ea160, 0x35, 0x17fb4e0, 0x24, 0x17627a0, 0x1d, ...)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:446 +0x5f2
github.com/docker/machine/drivers/azure.(*Driver).Create.func10(0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:322 +0x20f
github.com/docker/machine/drivers/azure.(*Driver).Create(0xc8200d0a00, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:326 +0x461
github.com/docker/machine/libmachine/drivers/rpc.(*RPCServerDriver).Create(0xc82012eec0, 0x2299078, 0x2299078, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:140 +0x7c
reflect.Value.call(0x108e980, 0x1518768, 0x13, 0x155ba18, 0x4, 0xc8204a3ee8, 0x3, 0x3, 0x0, 0x0, ...)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:435 +0x120d
reflect.Value.Call(0x108e980, 0x1518768, 0x13, 0xc8204a3ee8, 0x3, 0x3, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:303 +0xb1
net/rpc.(*service).call(0xc82012d5c0, 0xc820013e00, 0xc820212070, 0xc820091880, 0xc82020e6a0, 0xd7d040, 0x2299078, 0x16, 0xd7d040, 0x2299078, ...)
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:383 +0x1c2
created by net/rpc.(*Server).ServeCodec
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:477 +0x49d

Salud,
Trevor Sullivan

@ pcgeek86 parece que estás usando los binarios rc3 que envié antes. ¿Puedes probar rc4?

@ahmetalpbalkan Trabajó esta vez para crear el host de Docker en Azure. Intentaré implementarle una imagen.

@buckett , tiene razón, la autorización en el comando ls será un problema ya que se agota mientras solicitamos la autorización. Actualmente no tengo una solución para eso, pero creo que esto no será un gran problema a menudo, funciona en create / rm . Depuraré el problema de la red virtual. Gracias por informarnos.

@ pcgeek86 gracias por intentarlo.

@buckett , sería interesante ver si hay alguna diferencia entre el período de tiempo de espera con esta máquina acoplable en comparación con la CLI de Azure. Lo veré mañana.

@squillace estos dos no están relacionados. En el comando ls máquina espera que el controlador responda en aproximadamente 10 segundos, si no puede autenticarse en un corto período de tiempo, se agotará el tiempo de espera.

Oh bien. Eso es bastante corto si presiona el momento de autenticación.

@buckett de su salida Me di cuenta de que estábamos intentando eliminar la VM en lugar de VNet mientras limpiaba VNet :) Lo arreglé ahora. Las versiones más nuevas no tendrán este problema. ¡Gracias por notarlo e informarnos!

docker-machine ssh {machine} parece tener un tiempo de espera bastante largo, por lo que si el token de autenticación expira, lo he estado renovando simplemente haciendo una conexión ssh y luego lo tengo para usar durante unas horas.

@ahmetalpbalkan Cuando desasigna (apaga) una máquina virtual de Azure, el nuevo comando docker-machine queja.

Trevors-MBP:bin 3 trevorsullivan$ ./docker-mac ls
(azdh) PowerState "deallocated" does not map to a docker-machine state.
(azdh) PowerState "deallocated" does not map to a docker-machine state.
NAME         ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
azdh         -        azure                                                        Unknown
dh           -        vmwarefusion   Running   tcp://172.16.217.129:2376           v1.10.2
dockerhost   -        virtualbox     Stopped                                       Unknown

@ pcgeek86 buena captura. Déjame hacer que parezca que está detenido.

@buckett ese es un buen truco. Por cierto, sus credenciales no deberían expirar (le pide que abra el navegador) antes de 2 semanas (a menos que elimine $ HOME / .docker / machine). ¿Es algo que no suena como tu experiencia?

Aquí hay una nueva versión, debería solucionar el problema de PowerState y el problema de limpieza de la red virtual: http://cl.ly/fLkb

@ahmetalpbalkan Gracias, funciona mejor. Sin embargo, otro error es que cuando cambia la dirección IP pública, después de un reinicio, se lanza una excepción de credenciales no válidas.

Trevors-MBP:bin 4 trevorsullivan$ ./docker-machine-Darwin-x86_64 ls
NAME         ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
azdh         -        azure          Running   tcp://40.118.175.219:2376           Unknown   Unable to query docker version: Get https://40.118.175.219:2376/v1.15/version: x509: certificate is valid for 104.42.125.236, not 40.118.175.219
dh           -        vmwarefusion   Running   tcp://172.16.217.129:2376           v1.10.2
dockerhost   -        virtualbox     Stopped                                       Unknown

@ pcgeek86 Veo que esta es la misma máquina que desasignó desde Azure Portal. docker-machine normalmente no desasigna, solo detiene su VM y cuando desasigna, obtiene una nueva dirección IP.

Supongo que las preguntas aquí son:

  1. ¿Debería el controlador azure asignar una IP estática para las máquinas, algo que le cueste más al usuario? (quizás pueda ser un argumento)
  2. ¿Debería admitirse este escenario en el que el usuario administra / interviene la VM fuera de la máquina acoplable?

@ahmetalpbalkan Sí, esa es la misma máquina. Usé la CLI azure xplat para desasignar la máquina virtual y luego la reinicié unas horas más tarde.

En mi opinión:

  1. Docker solo es útil cuando se administra con una IP estática. Por lo tanto, esto debería ser un requisito para Docker Hosts en Azure.
  2. No, pero la IP estática seguirá siendo un requisito.

@ pcgeek86 puede que tengas razón. Mi suposición era que docker-machine usaría el comando docker-machine ip <vm> para buscar la IP cada vez que conecta la máquina, pero aparentemente se basa en una IP estática para generar certificados (puede mitigar esto usando docker-machine regenerate-certs ) .

Mantenedores: ¿creen que los controladores de máquinas deberían asignar direcciones IP externas estáticas de forma predeterminada (incluso si no son gratuitas)?

@ pcgeek86 Acabo de observar el mismo comportamiento en el controlador de Google. Utiliza direcciones IP públicas efímeras de forma predeterminada y obtengo el mismo error de certificado TLS cuando reinicio Google VM desde el portal. Supongo que se supone que no debes hacer esto. :PAGS

Pero espero agregar la bandera booleana --azure-static-public-ip en el futuro, pero no será el comportamiento predeterminado ya que la asignación de IP estática tiene un costo implícito para el usuario.

@ahmetalpbalkan, ¿ funciona regenerate-certs en ese caso? Las tres máquinas virtuales funcionaron, pero luego las derribé. No hay problemas, pero si regenerate-certs funciona ...

@squillace sí, para eso está diseñado, en caso de que pierda los certificados, puede regenerarlos a través de SSH.

@ahmetalpbalkan que parece la solución que Docker ya ha implementado. Me encontré con esto en ASM dm, y la regeneración funcionó bien. para Producción, pasaría a estático.

@squillace @ahmetalpbalkan Excelente, es bueno saber que docker regenerate-certs funcionará. Sin embargo, ¿se requeriría necesariamente IP estática en la producción? ¿Qué pasa si está usando el nombre DNS en su lugar? ¿Es esa una opción para Docker? Eso podría ayudar a solucionar el problema de los certificados.

@ahmetalpbalkan Mis credenciales parecen durar algunas horas. No ha pasado un día sin tener que volver a iniciar sesión. No voy a borrar nada de mi directorio personal.

@buckett Eso ciertamente suena como un error que no hemos podido reproducir. ¿Podría ejecutar docker-machine --debug ssh <vm> (reemplace ssh con ip / status como desee) y enviarme la salida de depuración (ahmetb en microsoft com) (o pegarla en un gist) cuando se le solicite la autenticación la próxima vez?

editar: seguimiento con él fuera de línea por correo electrónico.

¿Fue útil esta página
0 / 5 - 0 calificaciones