来自OSX的Ansible Docker模块

我正在尝试使用Ansible Docker模块,但是当我尝试运行我的剧本时,我正遇到这个错误 –

NameError: global name 'DEFAULT_DOCKER_API_VERSION' is not defined 

我在https://github.com/ansible/ansible-modules-core/issues/1792发现了一个官方的bug。

我已经通过安装docker-py尝试了解决方法,但迄今为止还没有喜悦。

任何想法可能会出错? 我试图从连接到AWS的本地OSX主机上运行我的Playbook。

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

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

在我们的.yml文件中

pip是python的一个软件包pipe理器,并且安装它。 所以你想要做的是安装python。

在OS XI上,build议您首先安装Homebrew ,它是OS X的包pipe理器。安装Homebrew的命令是

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

安装Homebrew之后,你可以安装Python,并与它一起点击

 brew install python 

通常它与缺lesspip或docker-py库有关。

我有这个在我的docker完成任务。

 - 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 

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" 

现在你的环境已经build立了,让我告诉你一些问题。 docker模块需要参数tls=encrypt 。 您可以在Ansible任务中将其提供给docker模块的每个调用,或者您可以通过-e use_tls=encrypt或在您的playbook中将其设置为“全局”:

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