Возможная ошибка: KeyError: 'ApiVersion'

Я использую Ansible 1.7 (devel) и Docker 0.9.1 build 3600720, и я застрял с этой ошибкой:

failed: [myapp.com] => {"failed": true, "item": "", "parsed": false}
invalid output was: Traceback (most recent call last):
  File "/root/.ansible/tmp/ansible-tmp-1400951250.7-173380463612813/docker", line 1959, in <module>
    main()
  File "/root/.ansible/tmp/ansible-tmp-1400951250.7-173380463612813/docker", line 693, in main
    containers = manager.create_containers(1)
  File "/root/.ansible/tmp/ansible-tmp-1400951250.7-173380463612813/docker", line 548, in create_containers
    if docker.utils.compare_version('1.10', self.client.version()['ApiVersion']) < 0:
KeyError: 'ApiVersion'

Есть идеи? Есть ли комбинация версий, которая работает? Мне нужен был Ansible 1.7 из-за "запущенного" состояния, которое было добавлено для докеров.

3 ответа

Решение

Я столкнулся с этой проблемой сегодня и решил исправить это. Суть проблемы в том, что в старых версиях docker не указан ApiVersion (или пакет docker-py не возвращает его).

Я отправил запрос на извлечение для решения этой проблемы в модуле ansible docker здесь: https://github.com/ansible/ansible/pull/7619

В качестве альтернативы вы можете обновить версию докера, чтобы обойти ее.

Как сказано в более общем ответе, используйте docker_api_version: auto аргумент:

- name: Mongo data container
  docker:
    docker_api_version: auto
    name: mongo-primary-dc
    image: debian:wheezy
    state: present
    volumes:
    - /data

Я получил ту же ошибку, и это исправило

$ sudo apt-get install -y python-pip
$ sudo pip install docker-py
Другие вопросы по тегам