Ansible: la versión de docker-py está marcada incorrectamente

Creado en 10 sept. 2016  ·  44Comentarios  ·  Fuente: ansible/ansible

TIPO DE PROBLEMA

  • Informe de error
NOMBRE DEL COMPONENTE

integración de Docker (pero no el módulo de Docker) (https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/docker_common.py#L154)

VERSION ANSIBLE
ansible 2.1.1.0
CONFIGURACIÓN

Ninguna

SO / MEDIO AMBIENTE

OS X, El Cap

RESUMEN

docker-py acaba de cambiar su versión a 1.10 . Este es el código que verifica la versión:

  154         if docker_version < MIN_DOCKER_VERSION:
  155             self.fail("Error: docker-py version is %s. Minimum version required is %s." % (docker_version,
  156      

Así es como Python compara cadenas:

>>> "1.5" < "1.7"
True
>>> "1.9" < "1.7"
False
>>> "1.10.1" < "1.7"
True
>>> "1.10.1" < "1.7.0"
True
>>> "1.10" < "1.7.0"
True

PASOS PARA REPRODUCIR

  1. Instale el último docker-py en la máquina de destino.
  2. Ejecute cualquier comando de Docker:
docker_service:
   ...
RESULTADOS PREVISTOS

Ejecutar docker

RESULTADOS ACTUALES
fatal: [demos]: FAILED! => {"changed": false, "failed": true, "msg": "Error: docker-py version is 1.10.1. Minimum version required is 1.7.0."}
affects_2.1 affects_2.2 bug docker

Comentario más útil

Honestamente, es sorprendente lo frágil que es ansible como entorno y la cantidad de esfuerzo que exige a sus usuarios para mantener las funcionalidades básicas funcionando con solo una actualización menor. Notable.

Todos 44 comentarios

Confirmado, Debian Jessie. Parece ... urgente.

Tenga en cuenta que docker-compose 1.8.0 requiere docker-py> 1.9, <2.0, por lo que si está configurando específicamente docker-py en una versión inferior a 1.9.0 e instalando docker-compose 1.8.0, actualizará docker-py todo el camino a 1.10.1 que actualmente rompe la comparación de versiones de cadenas. Establezca docker-py en 1.9.0 para evitar esto.

La mayoría de las personas que utilizan el paquete galaxy normal para Docker obtendrán el
la última versión por defecto - definitivamente podría romper muchas cosas

El viernes 9 de septiembre de 2016 a las 7:09 p.m., Shane StClair [email protected] escribió:

Tenga en cuenta que docker-compose 1.8.0 requiere docker-py> 1.9, <2.0, así que si está
específicamente configurando docker-py a una versión inferior a 1.9.0 e instalando
docker-compose 1.8.0 actualizará docker-py hasta 1.10.1 que
actualmente rompe la comparación de versiones de cadenas. Establecer docker-py en 1.9.0
prevenir esto.

-
Estás recibiendo esto porque eres el autor del hilo.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/ansible/ansible/issues/17495#issuecomment -246081820,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAeFZ-OYb5eZHpd8TFlSrX7Z9WimPuIwks5qohE9gaJpZM4J5lx9
.

FWIW, no estoy configurando docker-py en ninguna versión específica y esto me rompió de todos modos.

Sí, puedo confirmarlo en Ubuntu 16.04.

¿Existe una solución temporal?

Una degradación de docker-py a 1.9.0 es probablemente la más fácil

El lunes 12 de septiembre de 2016 a las 7:59 a.m., Kevin Wittek [email protected] escribió:

¿Existe una solución temporal?

-
Estás recibiendo esto porque eres el autor del hilo.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/ansible/ansible/issues/17495#issuecomment -246375443,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAeFZ0KPLl-PYEN80CH6YRvAwuVekYq1ks5qpWjLgaJpZM4J5lx9
.

@kiview
En caso de que use pip para instalar docker-py:
pip install 'docker-py==1.9.0'
O si ya se ha instalado la versión 1.10.1:
pip install 'docker-py==1.9.0' --force-reinstall

@vietbui Gracias, incluso funcionó especificando una versión específica docker-py en el rol angstwad.docker_ubuntu.

Hola chicos, ¿cuándo van a lanzar una nueva versión con este cambio combinado? ¿Planeas hacerlo pronto? ¡Gracias!

Frente a este problema también
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Error: docker-py version is 1.10.3. Minimum version required is 1.7.0."}

Docker-py degradado como lo sugirió

En caso de que use pip para instalar docker-py:
pip install 'docker-py == 1.9.0'
O si ya se ha instalado la versión 1.10.1:
pip install 'docker-py == 1.9.0' --force-reinstall

Pensé que esto se solucionaría en 2.1.2.0 pero lo intenté hoy:
"Error: la versión de docker-py es 1.10.3. La versión mínima requerida es 1.7.0".

¡Este es, en mi opinión, un problema urgente!

Recibí errores con varias versiones de docker-compose y docker-py, al final me decidí por
docker-compose (1.8.1) y docker-py (1.7.0) en mi cliente. No más errores y mi docker-compose.yml se consume correctamente. La versión de Ansible es 2.1.2.0

+1 !!
"Error: docker-py version is 1.10.3. Minimum version required is 1.7.0."}

En Ubuntu 16.04

ansible --version
ansible 2.1.1.0

Editar: lo mismo con 2.1.2.0

¿Por qué no hacer algo como esto?

(Pdb) '1.10.0' > '1.7.0'
False
(Pdb) [int(i) for i in '1.10.0'.split('.')] > [int(i) for i in '1.7.0'.split('.')]
True

Esa comparación funciona:

/usr/lib/python2.7/dist-packages/ansible/module_utils/docker_common.py

154         if [int(i) for i in docker_version.split('.')] < [int(i) for i in MIN_DOCKER_VERSION.split('.')]:
155             self.fail("Error: docker-py version is %s. Minimum version required is %s." % (docker_version,
156                                                                                            MIN_DOCKER_VERSION))

LooseVersion funciona bien. Es solo que este parche de una sola línea no se comprometió con la rama 2.1 ...

Op 6 okt. 2016 om 02:32 heeft Sean Ochoa [email protected] het volgende geschreven:

¿Por qué no hacer algo como esto?

(Pdb) '1.10.0'> '1.7.0'
Falso
(Pdb) [int (i) para i en '1.10.0'.split ('. ')]> [Int (i) para i en' 1.7.0'.split ('.')]
Cierto
-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub o silencia el hilo.

{"api_version": "1.0", "publisher": {"api_key": "05dde50f1d1a384dd78767c55493e4bb", "name": "GitHub"}, "entity": {"external_key": "github / ansible / ansible", "title ":" ansible / ansible "," subtitle ":" Repositorio de GitHub "," main_image_url ":" https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png " , "avatar_image_url": " https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png ", "action": {"name": "Abrir en GitHub", "url": " https://github.com/ansible/ansible "}}, "actualizaciones": {"snippets": [{"icon": "PERSON", "message": " @sochoa in # 17495: ¿Por qué no hacer algo como esto? \ R \ n \ r \ n \r\n(Pdb) '1.10.0' \u003e '1.7.0'\r\nFalse\r\n(Pdb) [int(i) for i in '1.10.0'.split('.')] \u003e [int(i) for i in '1.7.0'.split('.')]\r\nTrue\r\n "}]," action ": {" name ":" Ver problema "," url ":" https: // github. com / ansible / ansible / issues / 17495 # issuecomment -251837619 "}}}

@sochoa Funciona con tu solución. Actualicé el archivo manualmente.
Estaré atento a este problema para obtener un parche oficial.

Frente al mismo problema. ¿Alguna ETA en el lanzamiento oficial en el que se incluirá?

Tengo el mismo problema, pensé que se resolvería en la versión 2.1.2, pero todavía está ahí. ¿Se resolverá en 2.2.0?

Todavía tengo este problema con ansible 2.1.2.0

También tengo este problema en ansible 2.1.2.0, lo que significa que uno de mis servidores se detuvo y no se reinició

El mismo problema aquí, 2.1.2.0

Se solucionará en Ansible 2.2.0. :(

Puede parchear manualmente el archivo lib / ansible / module_utils / docker_common.py:
https://github.com/ansible/ansible/pull/17496/files

Debido a la cantidad de personas afectadas, parece un problema que merece una solución rápida (al contrario que esperar la próxima versión).
Los sistemas automatizados fallan y la única solución es reparar manualmente toda la infraestructura, no lo que esperamos de un módulo ansible.

¿Habrá un lanzamiento de parche para 2.1 con la solución pronto? En serio, este es un error grave, no deberíamos estar esperando una versión menor = /

Finalmente tuve que forzar la instalación de docker-py==1.9.0 en nuestras canalizaciones de Integración Continua para que la implementación automatizada funcionara. Espero que haya una solución para 2.1 pronto o un lanzamiento más rápido de 2.2

Para esto son las versiones de parche, ¡la solución debería haberse incluido en una versión actualizada mucho más rápido! He parcheado docker_common.py según el comentario anterior y funcionó (aunque no es fácil de encontrar en una instalación casera).

El viernes 14 de octubre de 2016 a las 8:55 p. M. +0100, "lukasged" [email protected] escribió:

Finalmente tuve que forzar la instalación de docker-py == 1.9.0 en nuestras canalizaciones de Integración Continua para que la implementación automatizada funcionara. Espero que haya una solución para 2.1 pronto o una versión más rápida de 2.2

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub o silencia el hilo.

También obtuve el mismo error :-(

- pip: name=docker-py version=1.9.0 state=forcereinstall
  when: upgrade_pip | success

- pip: name=docker-compose state=latest
  when: upgrade_pip | success

y la tarea docker-compose obligará a instalar la última versión de docker-py ...

Creo que v2.2.0.0-0.1.rc1 soluciona esto.

Como solución alternativa, puede instalar RC1: pip install git+https://github.com/ansible/[email protected]

Me di cuenta de que la rama devel está representada como 2.3.0 (a través de pip show ansible)
Este problema también se solucionó en esa rama.

Este cambio se ha actualizado a estable-2.1 para 2.1.3RC3. Se exportará a estable-2.2 si hay otra versión candidata a 2.2.0, de lo contrario, debería estar en 2.2.1.

bonito @nitzmahone , exactamente lo que la mayoría de nosotros buscamos: +1:

👍

... aay habrá un 2.2.0RC4, por lo que este ha sido elegido para acompañarlo en el viaje.

+1

Parece que ansible 2.2.0 está disponible, lo que soluciona este problema. ¿Correcto?

@dbrgn ¡Correcto! Eso es genial, aunque cambiar a ansible 2.2.0 me dio otro problema. Parece romper una función popular de ansible galaxy para mysql . Así que tenga cuidado si usa ese rol.

Sí, y 2.2 parece romper docker_service también: face_with_head_bandage: https://github.com/ansible/ansible-modules-core/pull/5159

Correcto

Op 3 nov. 2016 a las 23:55 heeft lukasged [email protected] het volgende geschreven:

@dbrgn ¡Correcto! Eso es genial, aunque cambiar a ansible 2.2.0 me dio otro problema. Parece romper una función popular de ansible galaxy para mysql. Así que tenga cuidado si usa ese rol.

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub o silencia el hilo.

{"api_version": "1.0", "publisher": {"api_key": "05dde50f1d1a384dd78767c55493e4bb", "name": "GitHub"}, "entity": {"external_key": "github / ansible / ansible", "title ":" ansible / ansible "," subtitle ":" Repositorio de GitHub "," main_image_url ":" https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png " , "avatar_image_url": " https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png ", "action": {"name": "Abrir en GitHub", "url": " https://github.com/ansible/ansible "}}, "actualizaciones": {"snippets": [{"icon": "PERSON", "message": " @lukasged in # 17495: @dbrgn ¡Correcto! Eso es genial, aunque cambiar a ansible 2.2.0 me dio otro problema. Parece romper una función popular de ansible galaxy para mysql . Así que ten cuidado si usas esa función. "}]," action ": {" name ":" Ver problema "," url ":" https://github.com/ansible/ansible/issues/17495#issuecomment -258298370 "}}}

Honestamente, es sorprendente lo frágil que es ansible como entorno y la cantidad de esfuerzo que exige a sus usuarios para mantener las funcionalidades básicas funcionando con solo una actualización menor. Notable.

No se pudo verificar la solución en Ansible 2.2, ya que se rompe por otro motivo en Mac OS X:

Traceback (most recent call last):\n  File \"/var/folders/79/4dttv20s6p30d78_yqmr3jjh0000gn/T/ansible_c_jdw536/ansible_module_docker_container.py\", line 652, in <module>\n    from ansible.module_utils.docker_common import *\n  File \"/var/folders/79/4dttv20s6p30d78_yqmr3jjh0000gn/T/ansible_c_jdw536/ansible_modlib.zip/ansible/module_utils/docker_common.py\", line 26, in <module>\nImportError: No module named 'urlparse'\n

Debido a que este ticket está cerrado, es probable que nadie vea comentarios sobre él. Abra un nuevo ticket si tiene problemas.

@ darkn3rd : parece que su problema es una incompatibilidad entre el comando docker_common.py y python3 en la máquina administrada. La solución alternativa sería ejecutar con python2. Veré cómo hacer un PR para el problema de python3.

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