如何使用ansible的docker connection-plugin?

时间:2017-05-05 14:08:31

标签: docker ansible

我想使用ansible自动创建和编辑docker容器,我在ansible GitHub存储库中找到了一个连接插件,它使用docker exec而不是ssh在容器内运行命令等。 我找不到关于这个插件的任何文档,并且无法准确地说明如何使用它?

提前感谢。

2 个答案:

答案 0 :(得分:4)

这很简单:设置connection: docker并使用容器名称作为库存主机。

示例:

# docker run -d --name=mycontainer -e FOO=bar alpine:latest sleep 600
fde1a28914174c53e8f186f2b8ea312c0bda9c895fc6c956f3f1315788f0bf20
# ansible all -i 'mycontainer,' -c docker -m raw -a 'echo $FOO'
mycontainer | SUCCESS | rc=0 >>
bar

请记住,大多数Ansible模块都需要Python,但通常你的容器中只有少量的库,而Python不在其中。

答案 1 :(得分:0)

2020 TLDR:运行最小的Python容器

在2020年,上述解决方案(运行一个最小的Alpine容器)不起作用- 未安装Python。

以Konstantin Suvorov的答案为基础,为了使Ansible开心,请给它一个细长的Python容器:

docker run -d --name=mycontainer python:3.8-slim-buster sleep 600

检查:

ansible all -i 'mycontainer,' -c docker -m setup

经典解决方案

上述解决方案不再起作用,Ansible无法发现Python:

docker run -d --name=bogus alpine:latest sleep 600

ansible all -i 'bogus,' -c docker -m setup

[WARNING]: No python interpreters found for host bogus (tried ['/usr/bin/python',
'python3.7', 'python3.6', 'python3.5', 'python2.7', 'python2.6',
'/usr/libexec/platform-python', '/usr/bin/python3', 'python'])

要使Ansible开心,请给它一个细长的Python容器:

docker run -d --name=mycontainer python:3.8-slim-buster sleep 600

检查:

ansible all -i 'mycontainer,' -c docker -m setup

推荐的Docker映像

Itamar Turner-Trauring [1]建议使用基本Python图像= python:3.8-slim-buster。 Alpine图像虽然好看又很小,但会导致Python出现很多问题! 上图是基于Debian的,足够小,而且完全牢固。

[1]来自https://pythonspeed.com/articles/base-image-python-docker-images/