Ansible错误:KeyError:'ApiVersion'

时间:2014-05-24 17:14:32

标签: docker ansible ansible-playbook dockerpy

我使用Ansible 1.7(开发)和Docker 0.9.1版本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,因为&#39;运行&#39;为docker容器添加的状态。

3 个答案:

答案 0 :(得分:0)

我今天遇到了这个问题并决定解决它。问题的关键是旧版本的docker没有指定ApiVersion(或者docker-py包没有返回它)。

我已在此处的ansible docker模块中提交了解决此问题的拉取请求:https://github.com/ansible/ansible/pull/7619

或者你可以升级你的泊坞版本来解决它。

答案 1 :(得分:0)

我得到了同样的错误并修复了它

$ sudo apt-get install -y python-pip
$ sudo pip install docker-py

答案 2 :(得分:0)

正如在more general answer中所述,使用docker_api_version: auto参数:

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