Ansible не может импортировать docker, даже если он установлен

#docker #ansible #docker-login

#докер #ансибль #docker-login

Вопрос:

Я пытаюсь создать сервер, который запускает контейнер docker, используя ansible, но я получаю сообщение об ошибке Failed to import the required Python library (Docker SDK for Python: docker (Python >= 2.7) or docker-py (Python 2.6)) on ubuntu-xenial's Python /usr/bin/python3 .

Целевой машиной является ubuntu ubuntu, в настоящее время в vagrant, но я получаю ту же ошибку на виртуальной машине Azure. Моя версия ansible — 2.9.15, версия docker, которую устанавливает ansible, — 20.10.1.

Мой тестовый файл инвентаризации состоит из

 all:
  vars:
    ansible_user: vagrant
    ansible_become: yes
    ansible_python_interpreter: /usr/bin/python3
  children:
    a_servers:
      hosts:
        192.168.33.100
    b_servers:
      hosts:
        192.168.33.100
    prod:
      hosts:
        192.168.33.100
 

Соответствующая часть моего плана действий такова:

 - name: Docker role
  include_role:
    name: nickjj.docker
  vars:
    docker__users: ['deploy']
    docker_registries:
      - #registry_url: "https://index.docker.io/v1/"
        username: "{{ docker_user.username }}"
        password: "{{ docker_user.password }}"
- name: Log in to docker
  docker_login:
    username: "{{ docker_user.username }}"
    password: "{{ docker_user.password }}"
  become: yes
  become_user: deploy
 

Когда я вхожу в окно vagrant в качестве пользователя deploy, я могу работать docker login и docker-compose up -d без каких-либо проблем. Я также могу запустить /usr/bin/python3 и импортировать docker без проблем.

В системе нет другого python.

Ошибка исходит от docker_login ресурса, который, похоже, не может импортировать docker.

Является ли конфигурация, которую я упускаю из виду, или что-то еще, что я упустил из виду, что может привести к сбою? Любая помощь будет очень признательна.

Комментарии:

1. Быстрая проверка: используйте pip модуль для установки docker перед запуском другой задачи и посмотрите, что произойдет. Если он сообщает changed , и ваш логин выполняется без ошибок, тогда вам нужно выяснить, почему вы думаете, что он установлен, а его нет. Если он сообщает ok , а вход в систему по-прежнему не выполняется … тогда вы обнаружили что-то, что в значительной степени похоже на ошибку.

2. Спасибо @Zeitounator, оказывается, что он не был установлен, хотя в используемом мной сборнике пьес говорится, что это должно быть. Я еще не понял, почему, но использование pip позволило мне двигаться вперед на данный момент.