Ansible не может найти модуль Python - PullRequest
2 голосов
/ 27 марта 2019

Использование ansible для запуска docker swarm на нескольких виртуальных машинах.
ansible не может найти модуль python docker на удаленной машине, даже если он установлен.

Запускаетplaybook sudo ansible-playbook -i inv2.py /etc/ansible/playbook.yml

Сообщение об ошибке:

fatal: [10.212.137.216]: FAILED! => {"changed": false, "msg": "Failed to import docker or docker-py - No module named requests.exceptions. Try `pip install docker` or `pip install docker-py` (Python 2.6)"}

Список модулей:

ubuntu@donald0:~$ 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.
...
cryptography (2.1.4)
docker (3.7.1)
docker-pycreds (0.4.0)
...

Ответы [ 3 ]

1 голос
/ 05 мая 2019

Эта ошибка возникает из-за того, что Ansible ищет другой путь модулей Python, которые вы используете.

Когда вы не вызываете Ansible, используя официальный пакет , он использует python2.7, поэтому, когда вы запускаете Ansible, он будет искать модули python 2.

Есть много способов решить эту проблему:

  • Добавление опции ansible_python_interpreter, устанавливающей правильный путь Python:

Как в следующем примере:

ansible-playbook -i inventory playbook.yml -e'ansible_python_interpreter=/usr/bin/python3'
  • Переустановите ansible, используя pip3, версию менеджера упаковщиков, которую я запускал в своей системе, я действительно думаю,что это лучший способ избежать ошибок в будущем:

Использование следующих команд:

sudo apt remove ansible
pip3 install ansible

Подробнее о поддержке Python 3 с Ansible: Ansible - Python 3Поддержка .

0 голосов
/ 27 марта 2019

У меня работают следующие конфигурации.Он устанавливает docker, python и docker-compose последнюю версию

---
- name: Checking docker on latest version
  apt: name=docker.io state=latest

- name: Checking python
  apt: name=python state=latest

- name: Checking docker-compose on latest version
  apt: name=docker-compose state=latest
0 голосов
/ 27 марта 2019

Убедитесь, что docker-py не установлен параллельно с Docker. Если это так, удалите docker-py и переустановите docker. См. Ссылку на требования @vladimir выше для более подробной информации.

На всякий случай, поскольку вы не предоставили свой playbook ...: Вы на 100% уверены, что команда docker запущена на вашем целевом vm? Или вы обращаетесь к вашему установленному рою с вашего ответного локального хоста? В последнем случае модуль pip docker должен быть установлен на машине, на которой запущен ansible.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...