来自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: ...