У меня есть ansible playbook, который можно запускать на разных компьютерах с Linux / macOS. И у меня есть задачи, которые используют ansible docker-compose
модуль. И в зависимости от ОС, в которой работает playbook, появляются разные ошибки, и они решаются по-разному.
macOS
В macOS я вижу ошибку {"changed": false, "msg": "Unable to load docker-compose. Try pip install docker-compose. Error: No module named 'compose'"}
и при попытке запустить pip install docker-compose
я вижу сообщение Requirement already satisfied: docker-compose
.
Итак, сначала я думаю, что, вероятно, ansible использует другую версию python, и мне нужно запустить pip2
или pip3
, поэтому я решил сделать задачу в playbook для установки модуля docker-compose
, в таком случае ansible должен управлять тем, как его установить.
Задача:
- name: install certain python modules for docker
pip:
name: "{{ item.name }}"
state: present
with_items:
- { name: docker-compose }`
при запуске playbook я вижу, что теперь ansible с использованием /usr/local/bin/pip3
для установки docker-compose
module, great ansible управляй тем, что python использовать! Но нет, он все еще не работает и дает сбой с той же ошибкой {"changed": false, "msg": "Unable to load docker-compose. Try pip install docker-compose. Error: No module named 'compose'"}
для задач, которые должны работать с docker -compose, хммм.
Поэтому, потратив некоторое время, я нашел решение для macOS здесь , а теперь, после установки docker-compose
pip из пользовательского каталога, он работает на macOS
Ubuntu
В том же самом Playbook, работающем в Ubuntu, произошел сбой с ошибкой {"changed": false, "msg": "Failed to import the required Python library (Docker SDK for Python: docker (Python >= 2.7) or docker-py (Python 2.6)) on Python /usr/bin/python2. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter, for example via pip install docker or pip install docker-py (Python 2.6). The error was: cannot import name credentials"}
при попытке запустить docker-compose
задачу, связанную с модулем.
Решение для Ubuntu - запустить pip3 install docker-py
Вопрос
Что не так с модулем ansible docker-compose
и как заставить его работать во всех операционных системах ?? Я могу попытаться запустить разные задачи, зависит от ОС, но это не очень чистое решение