首页 文章

来自OSX的Ansible Docker模块

提问于
浏览
1

我正在尝试使用Ansible Docker模块,但我正在尝试运行我的剧本时遇到此错误 -

NameError: global name 'DEFAULT_DOCKER_API_VERSION' is not defined

我在https://github.com/ansible/ansible-modules-core/issues/1792找到了一个关于此的官方错误 .

我已经通过安装docker-py尝试了解决方法,但到目前为止还没有任何乐趣 .

什么可能出错?我正在尝试从连接到AWS的本地OSX主机运行我的Playbook .

4 回答

  • 0

    经过进一步调查后,我们设法通过使用 -

    name: Install Docker PY
    pip: name=docker-py==1.1.0
    

    在我们的.yml文件中

  • 0

    pip是python的包管理器并随之安装 . 所以你想要做的是安装python .

    在OS X上,我建议您先安装Homebrew,它是OS X的软件包管理器 . 安装Homebrew的命令是

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    安装Homebrew之后,您可以安装python并随之一起使用

    brew install python
    
  • 0

    通常它与缺少pip或docker-py库有关 .

    我有这个在我的码头工作者ansible角色 .

    - name: install the required packages
      apt: pkg={{ item }} state=present update_cache=yes
      with_items:
       - python-pip
    
    - name: Install docker-py as a workaround for Ansible issue
      pip: name=docker-py version=1.2.3
    
  • 1

    TLDR; -e use_tls=encrypt

    • 我正在使用最新的 dockerpy==1.5.0

    • ~/.bash_profile 我有 eval "$(docker-machine env default)" 将运行

    export DOCKER_TLS_VERIFY="1"
    export DOCKER_HOST="tcp://192.168.99.100:2376"
    export DOCKER_CERT_PATH="/Users/meyers/.docker/machine/machines/default"
    export DOCKER_MACHINE_NAME="default"
    

    现在您的环境已经设置好让我告诉您修复 . docker模块需要参数 tls=encrypt . 您可以在Ansible任务中为docker模块的每次调用提供它,或者您可以通过 -e use_tls=encrypt 或在您的playbook中将其设置为"globally":

    - hosts: all
          vars:
            use_tls: 'encrypt'
          tasks:
            ...
    

相关问题