docker_container
ansible 2.3.0 (devel 216e2c8813) last updated 2017/01/20 09:22:29 (GMT +000)
ansible 2.2.0.0 (detached HEAD cdec853e37) last updated 2017/01/20 09:25:31 (GMT +000)
nada ha cambiado
Máquina Linux1 3.16.0-4-amd64 # 1 SMP Debian 3.16.36-1 + deb8u1 (2016-09-03) x86_64 GNU / Linux
lista de pips:
pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
backports.ssl-match-hostname (3.5.0.1)
cached-property (1.3.0)
chardet (2.3.0)
colorama (0.3.7)
defusedxml (0.4.1)
docker (2.0.2)
docker-compose (1.10.0)
docker-py (1.10.6)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
docopt (0.6.2)
docutils (0.12)
enum34 (1.1.6)
functools32 (3.2.3.post2)
iotop (0.6)
ipaddress (1.0.18)
jsonschema (2.5.1)
Pillow (2.6.1)
pip (9.0.1)
Pygments (2.0.1)
python-apt (0.9.3.12)
python-debian (0.1.27)
python-debianbts (1.11)
PyYAML (3.12)
reportbug (6.6.3)
requests (2.11.1)
roman (2.0.0)
setuptools (5.5.1)
six (1.10.0)
SOAPpy (0.12.22)
texttable (0.8.7)
websocket-client (0.40.0)
wstools (0.4.3)
Python --versión
Python 2.7.9
información de docker
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.12.3
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 0
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge null overlay host
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 3.16.0-4-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.963 GiB
Name: machine1
ID: PD6F:VQDI:VAK4:O3YU:PWDT:HFAG:T3Z4:FNP5:QLT7:C3TO:7OKS:OODH
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No kernel memory limit support
WARNING: No oom kill disable support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
Insecure Registries:
127.0.0.0/8
Cuando se usa el módulo docker_container
, falla cada vez con
"Failed to import docker-py - cannot import name Client. Try `pip install docker-py`"
- docker_container:
image: hello-world
name: hello
- También puede pegar enlaces a gist.github.com para archivos más grandesSe ejecuta la imagen.
TASK [docker-registry : docker_container] **************************************
task path: /vagrant/service-playbooks/roles/docker-registry/tasks/registry-server.yml:56
Using module file /home/vagrant/ansible/lib/ansible/modules/core/cloud/docker/docker_container.py
<192.168.77.201> ESTABLISH SSH CONNECTION FOR USER: deploy
<192.168.77.201> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.77.201 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817 `" && echo ansible-tmp-1484904632.51-163570270155817="` echo $HOME/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817 `" ) && sleep 0'"'"''
<192.168.77.201> PUT /tmp/tmpeXfDvf TO /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/docker_container.py
<192.168.77.201> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r '[192.168.77.201]'
<192.168.77.201> ESTABLISH SSH CONNECTION FOR USER: deploy
<192.168.77.201> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.77.201 '/bin/sh -c '"'"'chmod u+x /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/ /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/docker_container.py && sleep 0'"'"''
<192.168.77.201> ESTABLISH SSH CONNECTION FOR USER: deploy
<192.168.77.201> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r -tt 192.168.77.201 '/bin/sh -c '"'"'/usr/bin/python /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/docker_container.py; rm -rf "/home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/" > /dev/null 2>&1 && sleep 0'"'"''
fatal: [machine_1]: FAILED! => {
"changed": false,
"failed": true,
"invocation": {
"module_args": {
"api_version": null,
"blkio_weight": null,
"cacert_path": null,
"capabilities": null,
"cert_path": null,
"cleanup": false,
"command": null,
"cpu_period": null,
"cpu_quota": null,
"cpu_shares": null,
"cpuset_cpus": null,
"cpuset_mems": null,
"debug": false,
"detach": true,
"devices": null,
"dns_opts": null,
"dns_search_domains": null,
"dns_servers": null,
"docker_host": null,
"entrypoint": null,
"env": null,
"env_file": null,
"etc_hosts": null,
"exposed_ports": null,
"filter_logger": false,
"force_kill": false,
"groups": null,
"hostname": null,
"ignore_image": false,
"image": "hello-world",
"interactive": false,
"ipc_mode": null,
"keep_volumes": true,
"kernel_memory": null,
"key_path": null,
"kill_signal": null,
"labels": null,
"links": null,
"log_driver": null,
"log_options": null,
"mac_address": null,
"memory": "0",
"memory_reservation": null,
"memory_swap": null,
"memory_swappiness": null,
"name": "hello",
"network_mode": null,
"networks": null,
"oom_killer": null,
"oom_score_adj": null,
"paused": false,
"pid_mode": null,
"privileged": false,
"published_ports": null,
"pull": false,
"purge_networks": false,
"read_only": false,
"recreate": false,
"restart": false,
"restart_policy": null,
"restart_retries": null,
"security_opts": null,
"shm_size": null,
"ssl_version": null,
"state": "started",
"stop_signal": null,
"stop_timeout": null,
"timeout": null,
"tls": null,
"tls_hostname": null,
"tls_verify": null,
"trust_image_content": false,
"tty": false,
"ulimits": null,
"user": null,
"uts": null,
"volume_driver": null,
"volumes": null,
"volumes_from": null
},
"module_name": "docker_container"
},
"msg": "Failed to import docker-py - cannot import name Client. Try `pip install docker-py`"
}
to retry, use: --limit @/vagrant/service-playbooks/microservice-infrastructure-no-elastic.retry
@guenhter Parece que la tarea se está transfiriendo a 192.168.77.201 como usuario de "implementación". ¿Se recopiló la salida de la "lista de pip" en la descripción como ese usuario en ese host?
ssh [email protected] 'python -c "import docker-py"'
need_info
@guenhter
Esto se debe a su versión docker-compose.
El paquete docker-py ha cambiado de nombre a docker en la versión 2.0 (https://github.com/docker/docker-py/releases/tag/2.0.0). Y en esta versión, Docker.Client se ha renombrado a docker.APIClient.
Docker-compose 1.10+ ahora requiere docker en lugar de docker-py. Y debido a su nombre, el paquete docker está antes del docker-py en PYTHONPATH, lo que provoca el error de importación.
Una solución alternativa es degradar su versión de docker-compose a 1.9.0 en el momento en que el módulo docker_container de Ansible actualiza sus dependencias de docker-py a docker.
@jctanner
La salida de la lista de pips fue de ese host. Vea algunos comandos más a continuación:
ssh [email protected] 'python --version'
--> Python 2.7.9
ssh [email protected] 'python -c "import docker-py"'
--> File "<string>", line 1
import docker-py
^
SyntaxError: invalid syntax
ssh [email protected] 'pip list'
-->DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
backports.ssl-match-hostname (3.5.0.1)
cached-property (1.3.0)
chardet (2.3.0)
colorama (0.3.7)
defusedxml (0.4.1)
docker (2.0.2)
docker-compose (1.10.0)
docker-py (1.10.6)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
docopt (0.6.2)
docutils (0.12)
enum34 (1.1.6)
functools32 (3.2.3.post2)
iotop (0.6)
ipaddress (1.0.18)
jsonschema (2.5.1)
Pillow (2.6.1)
pip (9.0.1)
Pygments (2.0.1)
python-apt (0.9.3.12)
python-debian (0.1.27)
python-debianbts (1.11)
PyYAML (3.12)
reportbug (6.6.3)
requests (2.11.1)
roman (2.0.0)
setuptools (5.5.1)
six (1.10.0)
SOAPpy (0.12.22)
texttable (0.8.7)
websocket-client (0.40.0)
wstools (0.4.3)
@jpiron
Traté de degradar docker-compse
-> mismo error
Además, la desinstalación no ayudó.
docker-py es solo el nombre del proyecto. Instala un paquete de Python llamado docker. Entonces deberías ejecutar:
# python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import docker
>>> print(docker.version)
1.10.6
>>>
La degradación de docker-compose no eliminará el paquete de docker del proyecto de docker que está instalado en su servidor de acuerdo con su salida pip.
Lo siguiente debería solucionar su problema:
pip uninstall docker
pip uninstall docker-py
pip uninstall docker-compose
pip install docker-compose==1.9.0
@jpiron
Esto funciona perfectamente bien. ¡Gracias!
Pero en mi opinión, esto es solo una solución para que las cosas sigan funcionando.
No obstante, debería solucionarse esto para evitar la degradación de docker-compose.
¿Alguna noticia sobre esto?
Recibo el mismo error al intentar usar docker_image. ¿Debo abrir un nuevo problema o es exactamente el mismo problema?
- name: Test docker install by pulling hello world image
docker_image:
name: hello-world
fatal: [devhost]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to import docker-py - cannot import name Client. Try `pip install docker-py`"}
pip list | grep docker
docker (2.0.2)
docker-compose (1.9.0)
docker-py (1.10.6)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
No funcionará con docker y docker-py instalados. debe eliminar docker y reinstalar docker-py:
pip uninstall docker
pip install --ignore-installed docker-py
Esto debería resolver tu problema.
Esta confirmación e2a1ce2916e9b87fe1ad4a1011c04ef8d2faf046 debería resolver el problema. Hasta que se publique, supongo que nos quedamos con docker-compose <= 1.9.0.
Tuvimos que eliminar docker-compose 1.10 (pip-version) y todas sus dependencias (principalmente módulo docker). Hicimos una diferencia entre un estado limpio y un estado "contaminado" (con docker-compose 1.10 en pip instalado): para revertir, hicimos:
for pipPackage in cached-property colorama docker docker-compose dockerpty docopt functools32 jsonschema texttable docker-py ; do sudo pip uninstall -y ${pipPackage} 2>&1 | logger -i -t TestRemove ; done
Luego instalamos docker-compose 1.10 con el método curl (ver documento oficial). No hay problema con el recurso docker_container. Hay un problema con docker_service, porque necesita docker-compose en python. Pero ya no usamos docker_service. Las dependencias de Pip son un infierno que queremos evitar a partir de ahora !! Esta es la mejor solución que tenemos por ahora.
Esta confirmación e2a1ce2 debería resolver el problema.
Este parche no está presente en Ansible 2.2.1.0
.
Probé esto hoy con tags/v2.2.2.0-0.2.rc2
pero todavía tengo el problema:
deploy<strong i="8">@machine1</strong>:/home/vagrant$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
backports.ssl-match-hostname (3.5.0.1)
cached-property (1.3.0)
chardet (2.3.0)
colorama (0.3.7)
defusedxml (0.4.1)
docker (2.1.0)
docker-compose (1.11.2)
docker-py (1.10.6)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
docopt (0.6.2)
docutils (0.12)
enum34 (1.1.6)
functools32 (3.2.3.post2)
iotop (0.6)
ipaddress (1.0.18)
jsonschema (2.6.0)
Pillow (2.6.1)
pip (9.0.1)
Pygments (2.0.1)
python-apt (0.9.3.12)
python-debian (0.1.27)
python-debianbts (1.11)
PyYAML (3.12)
reportbug (6.6.3)
requests (2.13.0)
roman (2.0.0)
setuptools (5.5.1)
six (1.10.0)
SOAPpy (0.12.22)
texttable (0.8.7)
websocket-client (0.40.0)
wstools (0.4.3)
deploy<strong i="9">@machine1</strong>:/home/vagrant$ docker-compose
ERROR: Dependency conflict: an older version of the 'docker-py' package is polluting the namespace. Run the following command to remedy the issue:
pip uninstall docker docker-py; pip install docker
Por otro lado, cuando docker-py
no está instalado ( pip uninstall docker-py
), ansible se queja:
Failed to import docker-py - No module named docker. Try `pip install docker-py`
@guenhter ,
Instalar Ansible 2.3.0 (desarrollo): pip install git+git://github.com/ansible/ansible.git@devel
Ahora incluye e2a1ce2916e9b87fe1ad4a1011c04ef8d2faf046 que soluciona el problema de compatibilidad.
¿Cuándo estará disponible en una versión?
¿Alguna noticia sobre esto?
Como dijo @viossat , e2a1ce2916e9b87fe1ad4a1011c04ef8d2faf046 está incluido en la versión 2.3.0.
Resuelve el problema incluso con los paquetes docker
y los antiguos docker-py
instalados. Puedes probarlo:
virtualenv -p /usr/bin/python2.7 /tmp/venv
source /tmp/venv/bin/activate
pip install https://github.com/ansible/ansible/archive/v2.3.0.0-0.1.rc1.zip
pip install docker docker-py
ansible localhost -m docker_container -a "name=foo image=busybox"
La compatibilidad con las nuevas bibliotecas de Docker se incluye en la versión de Ansible 2.3. Dado que esta es (IMO) una función para agregar nuevo soporte para docker-py v2, no creo que esto se ajuste a nuestra política de backport.
Funciona muy bien con ansible 2.3
Solo tenía que asegurarme de que docker-py
ya no esté instalado pero que docker
esté disponible (a través de pip).
¡Muchas gracias!
Como dice @guenhter . Funciona con Ansible 2.3 si elimina el antiguo módulo docker-py
- name: remove docker-py
pip:
name: docker-py
state: absent
- name: Install docker python module
pip:
name: "docker-compose==1.12.0"
@martonsz Hola, tengo Ansible 2.3 pero
- name: Test docker install by pulling hello world image
docker_container:
name: hello-world
no funciona para mi.
lista de pips:
backports.ssl-match-hostname (3.5.0.1)
cached-property (1.3.0)
cffi (1.5.2)
chardet (2.3.0)
click (6.7)
colorama (0.3.7)
configobj (5.0.6)
Django (1.9.4)
django-debug-toolbar (1.4)
docker (2.2.1)
docker-compose (1.12.0)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
docopt (0.6.2)
html5lib (0.999)
jsonschema (2.6.0)
misaka (2.0.0)
mycli (1.8.1)
mysqlclient (1.3.7)
okapi2 (0.0.1)
pip (8.1.1)
prompt-toolkit (1.0.13)
pycparser (2.14)
pycrypto (2.6.1)
Pygments (2.2.0)
pygobject (3.14.0)
PyMySQL (0.7.10)
python-apt (0.9.3.12)
PyYAML (3.12)
requests (2.11.1)
setuptools (5.5.1)
six (1.8.0)
sqlparse (0.2.1)
texttable (0.8.8)
unattended-upgrades (0.1)
urllib3 (1.9.1)
uWSGI (2.0.12)
virtualenv (15.0.1)
wcwidth (0.1.7)
websocket-client (0.40.0)
Error:
TASK [confluence : Test docker install by pulling hello world image] *************************************
fatal: [web1-vultr]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to import docker-py - No module named docker. Try `pip install docker-py`"}
to retry, use: --limit @/home/martin/Work/ansible/site.retry
ansible --versión:
ansible 2.3.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]
@Applemann Había instalado "docker-py" anteriormente, tenía que pip uninstall docker; pip install docker
y luego empezó a funcionar ... no tengo idea de lo que pasó.
@matti Lo resolví agregando el parámetro -e 'ansible_python_interpreter=/usr/bin/python3'
cuando ejecuto ansible-playbook.
Porque en el servidor se usa python3, pero en mi localhost estaba predeterminado python 2.7
Todavía tengo este problema con 2.3.0.0.
He documentado sobre Stack Overflow aquí: http://stackoverflow.com/a/43975079/1064619
Pasos para reproducir:
Creé un nuevo VirtualEnv:
zoidberg:foley chris$ virtualenv ansible-test
New python executable in /Users/chris/src/hc/foley/ansible-test/bin/python2.7
Also creating executable in /Users/chris/src/hc/foley/ansible-test/bin/python
Installing setuptools, pip, wheel...done.
Ansible instalado:
(ansible-test) zoidberg:foley chris$ pip install ansible
Collecting ansible
Collecting pycrypto>=2.6 (from ansible)
Collecting paramiko (from ansible)
Using cached paramiko-2.1.2-py2.py3-none-any.whl
Collecting jinja2 (from ansible)
Using cached Jinja2-2.9.6-py2.py3-none-any.whl
Requirement already satisfied: setuptools in ./ansible-test/lib/python2.7/site-packages (from ansible)
Collecting PyYAML (from ansible)
Collecting cryptography>=1.1 (from paramiko->ansible)
Using cached cryptography-1.8.1-cp27-cp27m-macosx_10_10_intel.whl
Collecting pyasn1>=0.1.7 (from paramiko->ansible)
Using cached pyasn1-0.2.3-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from jinja2->ansible)
Requirement already satisfied: six>=1.6.0 in ./ansible-test/lib/python2.7/site-packages (from setuptools->ansible)
Requirement already satisfied: packaging>=16.8 in ./ansible-test/lib/python2.7/site-packages (from setuptools->ansible)
Requirement already satisfied: appdirs>=1.4.0 in ./ansible-test/lib/python2.7/site-packages (from setuptools->ansible)
Collecting idna>=2.1 (from cryptography>=1.1->paramiko->ansible)
Using cached idna-2.5-py2.py3-none-any.whl
Collecting enum34 (from cryptography>=1.1->paramiko->ansible)
Using cached enum34-1.1.6-py2-none-any.whl
Collecting ipaddress (from cryptography>=1.1->paramiko->ansible)
Using cached ipaddress-1.0.18-py2-none-any.whl
Collecting cffi>=1.4.1 (from cryptography>=1.1->paramiko->ansible)
Using cached cffi-1.10.0-cp27-cp27m-macosx_10_6_intel.whl
Collecting asn1crypto>=0.21.0 (from cryptography>=1.1->paramiko->ansible)
Using cached asn1crypto-0.22.0-py2.py3-none-any.whl
Requirement already satisfied: pyparsing in ./ansible-test/lib/python2.7/site-packages (from packaging>=16.8->setuptools->ansible)
Collecting pycparser (from cffi>=1.4.1->cryptography>=1.1->paramiko->ansible)
Installing collected packages: pycrypto, idna, enum34, ipaddress, pycparser, cffi, asn1crypto, cryptography, pyasn1, paramiko, MarkupSafe, jinja2, PyYAML, ansible
Successfully installed MarkupSafe-1.0 PyYAML-3.12 ansible-2.3.0.0 asn1crypto-0.22.0 cffi-1.10.0 cryptography-1.8.1 enum34-1.1.6 idna-2.5 ipaddress-1.0.18 jinja2-2.9.6 paramiko-2.1.2 pyasn1-0.2.3 pycparser-2.17 pycrypto-2.6.1
Comprobó la versión:
(ansible-test) zoidberg:foley chris$ ansible --version
ansible 2.3.0.0
config file =
configured module search path = Default w/o overrides
python version = 2.7.13 (default, May 14 2017, 22:38:03) [GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)]
Docker y docker-py instalados:
(ansible-test) zoidberg:foley chris$ pip list | grep docker
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
docker (2.0.0)
docker-py (1.10.6)
docker-pycreds (0.2.1)
Pero sigo recibiendo el mismo error:
(ansible-test) zoidberg:foley chris$ ansible-playbook -i inventory/local build.yml -vvvv
No config file found; using defaults
Loading callback plugin default of type stdout, v2.0 from /Users/chris/src/hc/foley/ansible-test/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc
PLAYBOOK: build.yml **********************************************************************************************************************************************************
1 plays in build.yml
PLAY [Build foley docker images] *********************************************************************************************************************************************
META: ran handlers
TASK [docker_image] **********************************************************************************************************************************************************
task path: /Users/chris/src/hc/foley/build.yml:12
Using module file /Users/chris/src/hc/foley/ansible-test/lib/python2.7/site-packages/ansible/modules/cloud/docker/docker_image.py
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: chris
<localhost> EXEC /bin/sh -c 'echo ~ && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889 `" && echo ansible-tmp-1494837576.9-236428678313889="` echo /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889 `" ) && sleep 0'
<localhost> PUT /var/folders/zn/cfj4ng250293z1g5s19w3zdh0000gn/T/tmp_SRwg6 TO /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/docker_image.py
<localhost> EXEC /bin/sh -c 'chmod u+x /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/ /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/docker_image.py && sleep 0'
<localhost> EXEC /bin/sh -c '/usr/bin/python /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/docker_image.py; rm -rf "/Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/" > /dev/null 2>&1 && sleep 0'
fatal: [127.0.0.1 -> localhost]: FAILED! => {
"changed": false,
"failed": true,
"invocation": {
"module_args": {
"api_version": null,
"archive_path": null,
"buildargs": {
"PRIVATE_REPO_PASSWORD": "6c50ef3a91e9b5cd47251f921f3fb53d1e53afa5",
"PRIVATE_REPO_USERNAME": "hexagonalwax"
},
"cacert_path": null,
"cert_path": null,
"container_limits": null,
"debug": false,
"docker_host": null,
"dockerfile": null,
"filter_logger": false,
"force": false,
"http_timeout": null,
"key_path": null,
"load_path": null,
"name": "honeycomb/foley",
"nocache": "False",
"path": ".",
"pull": true,
"push": false,
"repository": null,
"rm": true,
"ssl_version": null,
"state": "present",
"tag": "latest",
"timeout": null,
"tls": null,
"tls_hostname": null,
"tls_verify": null,
"use_tls": "no"
}
},
"msg": "Failed to import docker-py - No module named docker. Try `pip install docker-py`"
}
to retry, use: --limit @/Users/chris/src/hc/foley/build.retry
PLAY RECAP *******************************************************************************************************************************************************************
127.0.0.1 : ok=0 changed=0 unreachable=0 failed=1
Aquí está mi libro de jugadas:
(ansible-test) zoidberg:foley chris$ cat build.yml
---
- name: Build foley docker images
hosts: 127.0.0.1
connection: local
gather_facts: false
vars_files:
- "ansible/vars/build_secrets.yml"
tasks:
- docker_image:
path: .
name: worldofchris/foley
buildargs:
PRIVATE_REPO_USERNAME: "{{ PRIVATE_REPO_USERNAME }}"
PRIVATE_REPO_PASSWORD: "{{ PRIVATE_REPO_PASSWORD }}"
delegate_to: localhost
Y mi inventario:
(ansible-test) zoidberg:foley chris$ cat inventory/local
[localhost]
127.0.0.1 ansible_connection=local
¿Alguna idea de lo que estoy haciendo mal?
Gracias
@worldofchris docker-py es un módulo más antiguo, en ansible 2.3.0.0 intente instalar solo docker sin docker-py:
pip uninstall docker
pip uninstall docker-py
pip install docker
y ejecuta tu libro de jugadas.
Si uno instala ansible desde cero en un entorno centos limpio, ¿no se supone que Ansible traerá la versión correcta de docker py o siempre debemos ejecutar pip uninstall docker-py la primera vez?
@Applemann gracias por eso. Probé tu sugerencia pero obtuve el mismo resultado:
(ansible-test) zoidberg:foley chris$ pip uninstall docker
Uninstalling docker-2.0.0:
...
Successfully uninstalled docker-2.0.0
(ansible-test) zoidberg:foley chris$ pip uninstall docker-py
Uninstalling docker-py-1.10.6:
...
Successfully uninstalled docker-py-1.10.6
(ansible-test) zoidberg:foley chris$ pip list | grep docker
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
docker-pycreds (0.2.1)
(ansible-test) zoidberg:foley chris$ pip install docker
Collecting docker
Using cached docker-2.2.1-py2.py3-none-any.whl
Requirement already satisfied: backports.ssl-match-hostname>=3.5; python_version < "3.5" in ./ansible-test/lib/python2.7/site-packages (from docker)
Requirement already satisfied: ipaddress>=1.0.16; python_version < "3.3" in ./ansible-test/lib/python2.7/site-packages (from docker)
Requirement already satisfied: docker-pycreds>=0.2.1 in ./ansible-test/lib/python2.7/site-packages (from docker)
Requirement already satisfied: requests!=2.11.0,!=2.12.2,>=2.5.2 in ./ansible-test/lib/python2.7/site-packages (from docker)
Requirement already satisfied: websocket-client>=0.32.0 in ./ansible-test/lib/python2.7/site-packages (from docker)
Requirement already satisfied: six>=1.4.0 in ./ansible-test/lib/python2.7/site-packages (from docker)
Installing collected packages: docker
Successfully installed docker-2.2.1
(ansible-test) zoidberg:foley chris$ pip list | grep docker
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
docker (2.2.1)
docker-pycreds (0.2.1)
(ansible-test) zoidberg:foley chris$ ansible-playbook -i inventory/local build.yml -vvvv
No config file found; using defaults
Loading callback plugin default of type stdout, v2.0 from /Users/chris/src/hc/foley/ansible-test/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc
PLAYBOOK: build.yml **********************************************************************************************************************************************************
1 plays in build.yml
PLAY [Build foley docker images] *********************************************************************************************************************************************
META: ran handlers
TASK [docker_image] **********************************************************************************************************************************************************
task path: /Users/chris/src/hc/foley/build.yml:12
Using module file /Users/chris/src/hc/foley/ansible-test/lib/python2.7/site-packages/ansible/modules/cloud/docker/docker_image.py
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: chris
<localhost> EXEC /bin/sh -c 'echo ~ && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324 `" && echo ansible-tmp-1494842343.37-265680192802324="` echo /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324 `" ) && sleep 0'
<localhost> PUT /var/folders/zn/cfj4ng250293z1g5s19w3zdh0000gn/T/tmph0iFSY TO /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/docker_image.py
<localhost> EXEC /bin/sh -c 'chmod u+x /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/ /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/docker_image.py && sleep 0'
<localhost> EXEC /bin/sh -c '/usr/bin/python /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/docker_image.py; rm -rf "/Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/" > /dev/null 2>&1 && sleep 0'
fatal: [127.0.0.1 -> localhost]: FAILED! => {
"changed": false,
"failed": true,
"invocation": {
"module_args": {
"api_version": null,
"archive_path": null,
"buildargs": {
"PRIVATE_REPO_PASSWORD": "6c50ef3a91e9b5cd47251f921f3fb53d1e53afa5",
"PRIVATE_REPO_USERNAME": "hexagonalwax"
},
"cacert_path": null,
"cert_path": null,
"container_limits": null,
"debug": false,
"docker_host": null,
"dockerfile": null,
"filter_logger": false,
"force": false,
"http_timeout": null,
"key_path": null,
"load_path": null,
"name": "honeycomb/foley",
"nocache": "False",
"path": ".",
"pull": true,
"push": false,
"repository": null,
"rm": true,
"ssl_version": null,
"state": "present",
"tag": "latest",
"timeout": null,
"tls": null,
"tls_hostname": null,
"tls_verify": null,
"use_tls": "no"
}
},
"msg": "Failed to import docker-py - No module named docker. Try `pip install docker-py`"
}
to retry, use: --limit @/Users/chris/src/hc/foley/build.retry
PLAY RECAP *******************************************************************************************************************************************************************
127.0.0.1 : ok=0 changed=0 unreachable=0 failed=1
¿He seguido tus instrucciones correctamente?
Salud
Chris
@worldofchris también puede intentar ejecutarlo con el intérprete de python3 en lugar de python 2.7
Porque tuve el mismo problema aquí: https://github.com/ansible/ansible/issues/20492#issuecomment -293644891
Y lo resolví ejecutando el libro de jugadas en python3.
Gracias @Applemann lo cambió a Python 3 y funcionó. Necesitaba una razón para pasar a Python 3, así que esta es tan buena como cualquier otra.
¡Salud!
Gracias @Applemann, cambiar a python3 y señalar al intérprete de python en virtualenv también funcionó.
ansible-playbook docker-test.yml \
-e 'ansible_python_interpreter=/data/python/envs/ansible/bin/python3'
Encontré este problema también con
''
Python 2.7.13
pip 9.0.1 de /usr/lib/python2.7/dist-packages (python 2.7)
ansible 2.3.0.0 (en la máquina local)
Cliente:
Versión: 1.12.6
Versión de API: 1.24
Go versión: go1.7.4
Confirmación de Git: 78d1802
Construido: Tue Mar 14 09:47:15 2017
SO / Arch: linux / amd64
Servidor:
Versión: 1.12.6
Versión de API: 1.24
Go versión: go1.7.4
Confirmación de Git: 78d1802
Construido: Tue Mar 14 09:47:15 2017
SO / Arch: linux / amd64
`` ``
Establecer python3
como ejecutable no resolvió esto por mí. Se las arregló para que funcionara haciendo un pip install docker docker-compose
(sin docker-py
presente) como se sugiere. Sin docker-compose
vía pip, el módulo docker_container
ansible funcionó, docker_service
no.
Esto no tiene nada que ver con este problema. Ansible siempre requería docker-compose para el módulo docker_service.
Además, docker
y docker-py
no se pueden coinstalar en este momento, por lo que tener ambos instalados probablemente causará problemas.
Ahora está arreglado en 2.3.0. Solo necesita instalar el último docker-compose a través de pip en el control remoto, luego intente ejecutarlo y le dirá qué paquetes antiguos necesita eliminar.
¿Por qué este problema sigue abierto?
Sigo viendo este problema en Ansible 2.3.0:
$ ansible --version
ansible 2.3.0.0
config file = /vagrant/ansible/ansible.cfg
configured module search path = [u'./library']
python version = 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4]
$ pip freeze | grep docker
docker==2.3.0
docker-compose==1.14.0
docker-pycreds==0.2.1
dockerpty==0.4.1
Error del libro de jugadas con el módulo docker_container
:
¡HA FALLADO! => {"cambiado": falso, "fallido": verdadero, "msg": "No se pudo importar docker-py - No hay módulo llamado docker. Pruebe
pip install docker-py
"
SO: Ubuntu 14.04.5 con 3.13.0-121-genérico x86_64 (caja vagabunda)
Versión de Python: 2.7.6
EDITAR: Esto se resuelve asegurándose de que la caja TARGET tenga estos módulos pip instalados, no solo la caja que ejecuta ansible:
- name: Ensure old module not present
pip:
name: docker-py
state: absent
- name: Install pip modules on target box
pip:
name: "{{ item }}"
state: present
with_items:
- docker
- docker-compose
Todavía me sucede en ansible 2.3.1.0:
$ ansible --version
ansible 2.3.1.0
config file = /home/reegnz/demo/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.5 (default, Aug 2 2016, 04:20:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]
Estoy preparando un virtualenv que solo contiene docker-compose, tira de docker como una dependencia transitiva.
$ virtualenv venv
$ source venv/bin/activate
(venv) $ pip install --upgrade pip
Downloading/unpacking pip from https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
Downloading pip-9.0.1.tar.gz (1.2MB): 1.2MB downloaded
Running setup.py egg_info for package pip
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'python_requires'
warnings.warn(msg)
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.mailmap'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.landscape.yml'
warning: no previously-included files found matching 'pip/_vendor/Makefile'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files found matching 'dev-requirements.txt'
warning: no previously-included files found matching 'appveyor.yml'
no previously-included directories found matching '.github'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'contrib'
no previously-included directories found matching 'tasks'
no previously-included directories found matching 'tests'
Installing collected packages: pip
Found existing installation: pip 1.4.1
Uninstalling pip:
Successfully uninstalled pip
Running setup.py install for pip
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'python_requires'
warnings.warn(msg)
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.mailmap'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.landscape.yml'
warning: no previously-included files found matching 'pip/_vendor/Makefile'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files found matching 'dev-requirements.txt'
warning: no previously-included files found matching 'appveyor.yml'
no previously-included directories found matching '.github'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'contrib'
no previously-included directories found matching 'tasks'
no previously-included directories found matching 'tests'
Installing pip script to /home/reegnz/test/venv/bin
Installing pip2.7 script to /home/test/venv/bin
Installing pip2 script to /home/test/venv/bin
Successfully installed pip
Cleaning up...
(venv) $ pip install docker-compose
Collecting docker-compose
Using cached docker_compose-1.14.0-py2.py3-none-any.whl
Collecting cached-property<2,>=1.2.0 (from docker-compose)
Using cached cached_property-1.3.0-py2.py3-none-any.whl
Collecting backports.ssl-match-hostname>=3.5; python_version < "3.5" (from docker-compose)
Collecting ipaddress>=1.0.16; python_version < "3.3" (from docker-compose)
Using cached ipaddress-1.0.18-py2-none-any.whl
Collecting jsonschema<3,>=2.5.1 (from docker-compose)
Using cached jsonschema-2.6.0-py2.py3-none-any.whl
Collecting texttable<0.9,>=0.8.1 (from docker-compose)
Collecting six<2,>=1.3.0 (from docker-compose)
Using cached six-1.10.0-py2.py3-none-any.whl
Collecting docker<3.0,>=2.3.0 (from docker-compose)
Using cached docker-2.4.0-py2.py3-none-any.whl
Collecting enum34<2,>=1.0.4; python_version < "3.4" (from docker-compose)
Using cached enum34-1.1.6-py2-none-any.whl
Collecting websocket-client<1.0,>=0.32.0 (from docker-compose)
Using cached websocket_client-0.44.0-py2.py3-none-any.whl
Collecting PyYAML<4,>=3.10 (from docker-compose)
Collecting colorama<0.4,>=0.3.7 (from docker-compose)
Using cached colorama-0.3.9-py2.py3-none-any.whl
Collecting requests!=2.11.0,<2.12,>=2.6.1 (from docker-compose)
Using cached requests-2.11.1-py2.py3-none-any.whl
Collecting docopt<0.7,>=0.6.1 (from docker-compose)
Collecting dockerpty<0.5,>=0.4.1 (from docker-compose)
Collecting functools32; python_version == "2.7" (from jsonschema<3,>=2.5.1->docker-compose)
Collecting docker-pycreds>=0.2.1 (from docker<3.0,>=2.3.0->docker-compose)
Using cached docker_pycreds-0.2.1-py2.py3-none-any.whl
Installing collected packages: cached-property, backports.ssl-match-hostname, ipaddress, functools32, jsonschema, texttable, six, websocket-client, docker-pycreds, requests, docker, enum34, PyYAML, colorama, docopt, dockerpty, docker-compose
Successfully installed PyYAML-3.12 backports.ssl-match-hostname-3.5.0.1 cached-property-1.3.0 colorama-0.3.9 docker-2.4.0 docker-compose-1.14.0 docker-pycreds-0.2.1 dockerpty-0.4.1 docopt-0.6.2 enum34-1.1.6 functools32-3.2.3.post2 ipaddress-1.0.18 jsonschema-2.6.0 requests-2.11.1 six-1.10.0 texttable-0.8.8 websocket-client-0.44.0
(venv) $ pip freeze > venv-requirements.txt
El archivo venv-requirements.txt tiene este aspecto:
( venv) $ cat venv-requirements.txt
backports.ssl-match-hostname==3.5.0.1
cached-property==1.3.0
colorama==0.3.9
docker==2.4.0
docker-compose==1.14.0
docker-pycreds==0.2.1
dockerpty==0.4.1
docopt==0.6.2
enum34==1.1.6
functools32==3.2.3.post2
ipaddress==1.0.18
jsonschema==2.6.0
PyYAML==3.12
requests==2.11.1
six==1.10.0
texttable==0.8.8
websocket-client==0.44.0
Instalo un virtualenv en mi máquina remota en / opt / ansible / venv con el archivo de requisitos pip anterior, y anulo ansible_python_interpreter con el siguiente script / opt / ansible / python-venv:
#!/bin/bash
source /opt/ansible/venv/bin/activate
python "$@"
Sigo recibiendo el siguiente error de ansible-playbook:
fatal: [localhost]: FAILED! => {
"changed": false,
"failed": true,
"invocation": {
"module_args": {
"api_version": null,
"build": false,
"cacert_path": null,
"cert_path": null,
"debug": false,
"definition": null,
"dependencies": true,
"docker_host": null,
"files": null,
"filter_logger": false,
"hostname_check": false,
"key_path": null,
"nocache": false,
"project_name": null,
"project_src": "/opt/test",
"pull": true,
"recreate": "smart",
"remove_images": null,
"remove_orphans": false,
"remove_volumes": false,
"restarted": false,
"scale": null,
"services": null,
"ssl_version": null,
"state": "present",
"stopped": false,
"timeout": 10,
"tls": null,
"tls_hostname": null,
"tls_verify": null
}
},
"msg": "Failed to import docker-py - No module named docker. Try `pip install docker-py`"
}
También intenté instalar los paquetes docker-compose y docker-py sin éxito. Entonces sigo recibiendo el mismo mensaje de error.
Resulta que mi script de python-venv citado estaba mal y funciona.
Este era mi guión, no el que cité ...
#!/bin/bash
source /opt/ansible/bin/activate
python "$@"
Observe que falta 'venv' en el camino.
El mensaje de error no estaba del todo claro, por eso me tomó un tiempo depurarlo. Json no contiene el mensaje de error de Python.
Lo siento por los inconvenientes ocasionados.
ansible 2.3.0.0
versión de python = 2.7.13
lista de $ pip | grep docker
DEPRECACIÓN: el formato predeterminado cambiará a columnas en el futuro. Puede usar --format = (heredado | columnas) (o definir un formato = (heredado | columnas) en su pip.conf en la sección [lista]) para deshabilitar esta advertencia.
acoplador (2.4.2)
docker-compose (1.14.0)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
Error: ¡FALLÓ! => {"cambiado": falso, "fallido": verdadero, "msg": "No se pudo importar docker-py - No hay módulo llamado docker. Prueba pip install docker-py
"}
Sugiera una solución para esto. Todavía tengo que probarlo en virtualenv, mencionado en el comentario reegnz.
Para las personas perezosas para leer todas las publicaciones aquí:
Desde ansible 2.3, el problema de dependencia docker-py está solucionado:
si usa el python 2.7 predeterminado, el módulo docker necesita docker-py
si usa python 3 ( -e 'ansible_python_interpreter=/usr/bin/python3'
), necesita docker en lugar de docker-py
en todo caso, limpiar por pip uninstall docker docker-py docker-compose
reinstalar
pip install docker-compose
python 3 no está en grandes distribuciones como CentOS / RHEL.
Agregaría , además de
-> módulos ansible como docker y docker-login requieren docker-py
-> docker-compose require docker (y no funciona si están instalados tanto docker como docker-py):
docker-compose
WARNING: Dependency conflict: an older version of the 'docker-py' package may be polluting the namespace. If you're experiencing crashes, run the following command to remedy the issue:
pip uninstall docker-py; pip uninstall docker; pip install docker
Entonces, es ansible trabajando o docker-compose. Está desordenado.
No tengo claro por qué se cierra este problema, ya que parece que ansible debería actualizar los módulos para que funcionen con docker en lugar de docker-py, incluso para 2.7, como lo hizo docker-compose.
Editar - funcionando - error de usuario: En mi caso, esto no fue un error. Para cualquier otra persona que experimente esto, intente ejecutar ansible con -vvvv. Vi que ansible estaba usando /usr/bin/python
. Tuve que configurar ansible_python_interpreter
en el ejecutable de Python en mi máquina host en el virtualenv donde pip estaba instalando cosas. Eso cambió el error a archivo no encontrado, lo que me hizo darme cuenta de que todo el error provenía de la máquina de destino. Así que cambié ansible_python_interpreter
para que sea el ejecutable de Python de la máquina de destino, instalé docker-py en la máquina de destino y obtuve un error diferente sobre alguna otra dependencia relacionada (websockets o solicitudes o algo así) que no se está instalando. Luego desinstalé docker / docker-py en la máquina de destino e instalé docker-compose. Entonces todo funcionó.
Texto original - edición previa:
Solo una actualización con más información sobre un sistema defectuoso.
Mac 10.12.6
Versión de Docker 17.09.0-ce-mac35 (19611)
ansible 2.4.0.0
pip desinstalar docker docker-py docker-compose
pip install docker-compose
docker_image
FAILED! => {"changed": false, "failed": true, "msg": "Failed to import docker-py - No module named requests.exceptions. Try `pip install docker-py`"}
ansible localhost -m shell -a "python -c 'import requests.exceptions'"
localhost | SUCCESS | rc=0 >>
Tuve el problema de la muestra,
fatal: [localhost -> localhost]: FAILED! => {"changed": false, "msg": "Failed to import docker-py - No module named requests.exceptions. Try 'pip install docker-py'"}
Nada de lo mencionado en este hilo ayudó. Bajé ansible y todo funcionó.
pip install ansible==2.3.3.0
Los usuarios siguen encontrándose con este problema desde hace un año. ¿Por qué está cerrado este boleto?
Timo Soini
El mismo problema, "Controller" en Mac, "Managed-Host" en RPi, han estado luchando con esto durante 3 semanas. Registré mi propio problema, lo cerraron, entonces, ¿a dónde vamos desde aquí?
Esto es lo que abrí y lo cerré rápidamente. https://github.com/ansible/ansible/issues/34851
"Esto no es un problema con ansible, sino un problema potencial con docker-py / docker upstream: docker / docker-py # 1353
Pero tampoco hay respuesta en el enlace anterior.
Recibía el error y ejecutaba "pip install docker-py" lo solucionó, tal como decía el mensaje de error. Ansible 2.4.2.0.
¿Por qué está cerrado este problema? Instalamos el último ansible 2.4.2.0 en el último RedHat 7.4, que es una máquina limpia desde cero. Requiere docker-py y python3 no está instalado. Ansible RPM proporciona docker.py y NO docker-py. Es incompatible con Ansible instalar docker.py y usar docker-py.py.
Estoy enfrentando el problema en ansible==2.5.0
. Cualquier ayuda es muy apreciada.
Pruebe la resolución mencionada aquí https://github.com/ansible/ansible/issues/20492#issuecomment -361724244 - Ansible incluye un módulo docker, pero NO incluye el SDK del docker (necesario para comunicarse con el demonio del docker). Eso debe instalarse si desea utilizar el módulo.
@ryansb Puedo reproducir el problema con Ansible 2.5.0 en python3.
fatal: [db01]: FAILED! => {"changed": false, "msg": "Failed to import docker-py - No module named requests.exceptions. Try `pip install docker-py`"}
A pesar de:
$ pip3 freeze |grep docker
docker-py==1.10.6
docker-pycreds==0.2.2
La actualización a Ansible 2.4.3.0 no resuelve el problema.
Tengo la sospecha de que esto podría tener que ver con py2 vs py3, pero no tengo tiempo para reproducir en py2 en este momento.
FWIW Estoy viendo esto tanto en Ubuntu como en Fedora como nodo de control.
Comencé a instalar ansible con el administrador de paquetes nix para asegurarme de que siempre
tiene las dependencias correctas y no hay bibliotecas de Python adicionales en Python
camino. Estoy de acuerdo en que esto no es un problema ansible, es una biblioteca ascendente
problema, pero si el estado de su sistema impide que ansible funcione, nix
resuelve el problema de forma muy limpia.
El lunes 2 de abril de 2018 a las 18:31 David Moreau Simard [email protected]
escribió:
@ryansb https://github.com/ryansb Puedo reproducir el problema con
Ansible 2.5.0 en python3.fatal: [db01]: ¡FALLÓ! => {"cambiado": falso, "msg": "No se pudo importar docker-py - No hay ningún módulo llamado solicitudes, excepciones. Prueba
pip install docker-py
"}A pesar de:
$ pip3 congelar | grep docker
docker-py == 1.10.6
docker-pycreds == 0.2.2La actualización a Ansible 2.4.3.0 no resuelve el problema.
Tengo la sospecha de que esto podría tener que ver con py2 vs py3 pero no
tenga tiempo para reproducir en py2 ahora mismo.FWIW Estoy viendo esto tanto en Ubuntu como en Fedora como nodo de control.
-
Recibes esto porque estás suscrito a este hilo.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/ansible/ansible/issues/20492#issuecomment-378067072 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAnvxX5ctoUwDA-3VUVyTjh_k3vyMIa8ks5tkqbRgaJpZM4LpGqv
.
@ryansb Gracias por la ayuda. Pero, lamentablemente, no solucionó el problema.
nada
> nix-env -qa|grep sible
python2.7-ansible-2.1.4.0
python2.7-ansible-2.2.1.0
python2.7-ansible-2.3.2.0
python2.7-ansible-2.4.2.0
python2.7-ansible-lint-3.4.20
vimplugin-sensible-2018-01-22
> nix-env -i python2.7-ansible-2.4.2.0
Vuelva a abrir este problema.
@jpiron , ¿tiene un estado actualizado relacionado con esto?
Pasé por todas las soluciones de hilo, ninguna funcionó.
fatal: [172.16.101.44]: FAILED! => {"changed": false, "msg": "Failed to import docker-py - No module named 'docker'. Try `pip install docker-py`"}
@lifenautjoe has probado https://github.com/ansible/ansible/issues/20492#issuecomment -307642085
Si ha instalado el módulo docker-py
y aún tiene este problema, es porque no está utilizando el intérprete de Python correcto con Ansible. Si, por ejemplo, tiene Python 2 y 3 instalados e instala con pip3 install docker-py
pero Ansible está usando Python 2, no verá el módulo tal como está instalado en el directorio de paquetes del sitio de Python3.
En este caso, deberá configurar ansible_python_interpreter
en el host de su inventario. Consulte http://docs.ansible.com/ansible/latest/reference_appendices/python_3_support.html para obtener más información sobre ansible_python_interpreter
.
Este no es un error de Ansible, es un problema en el entorno Python del sistema.
Hola @antoinetran , lo hice. De hecho, comencé con python3 y ahora bajé a python2. Todavía hay errores, pero ahora están relacionados con el paquete de solicitudes (instalarlo tampoco lo resuelve) ☹️
@lifenautjoe, esto parece ser un problema con su sistema. Si necesita ayuda, diríjase a Grupos de Google o al canal #ansible en Freenode para buscar el consejo de la comunidad. https://docs.ansible.com/ansible/latest/community/communication.html
tldr; realice las desinstalaciones / instalaciones anteriores en el host de destino .
Recibí este error usando los módulos ansible docker_service y docker_container. Intenté todo lo anterior pero ninguno funcionó. Pasé un tiempo vergonzosamente largo tratando de averiguar qué estaba pasando hasta que me di cuenta de que el error provenía de mi objetivo remoto ... Todo lo que tenía que hacer era seguir el comentario de @jpiron para instalar docker-compose 1.9.0 en el control remoto target en lugar de mi venv local donde existen mis libros de jugadas y todo funcionó.
Espero que esto resuelva algunos misterios.
Como otros, recibí el mismo error. No se pudo importar docker-py a través de una compilación de Terraform.
pip install --user --upgrade pip
estaba rompiendo cosas por mí. Aquí está mi entorno de trabajo:
Ubuntu 16.04
- python 2.7.12
- pip 8.1.1
- ansible 2.5.1
- docker 18.03.0-ce
- docker-compose 1.21.0
Espero que ayude.
Aún enfrenta problemas relacionados con este paquete en 2.5.3. Cuando se tiene docker-py
instalado dentro de Python2.7, el módulo docker-container
funciona muy bien, pero el docker-service
no lo hace porque requiere que Docker compose esté instalado.
Al seguir las instrucciones de instalación proporcionadas por Ansible pip install docker-compose
, también instala la versión Python 3 del paquete docker
, que rompe el módulo docker-container
. La eliminación manual de docker
tampoco ayuda y aún falla con un mensaje _Failed to import docker-py_.
No está muy claro cómo continuar y tener ambos módulos funcionando al mismo tiempo.
En este punto, puede ser mejor abrir un nuevo problema, ya que este está cerrado y tal vez los desarrolladores de Ansible ya no lo vean.
Comentario más útil
docker-py es solo el nombre del proyecto. Instala un paquete de Python llamado docker. Entonces deberías ejecutar:
La degradación de docker-compose no eliminará el paquete de docker del proyecto de docker que está instalado en su servidor de acuerdo con su salida pip.
Lo siguiente debería solucionar su problema: