我想使用ansible自动创建和编辑docker容器,我在ansible GitHub存储库中找到了一个连接插件,它使用docker exec而不是ssh在容器内运行命令等。 我找不到关于这个插件的任何文档,并且无法准确地说明如何使用它?
提前感谢。
答案 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年,上述解决方案(运行一个最小的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
Itamar Turner-Trauring [1]建议使用基本Python图像= python:3.8-slim-buster。 Alpine图像虽然好看又很小,但会导致Python出现很多问题! 上图是基于Debian的,足够小,而且完全牢固。
[1]来自https://pythonspeed.com/articles/base-image-python-docker-images/