Возможная ошибка: 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