ansible docker - проблемы с модулем - PullRequest
1 голос
/ 10 января 2020

У меня есть 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 и как заставить его работать во всех операционных системах ?? Я могу попытаться запустить разные задачи, зависит от ОС, но это не очень чистое решение

...