可以使用docker连接驱动程序实现ansible的实现,但这仅在ansible在作为dockerRunner的主机上运行时才有效。事实并非如此,如果可能的话,我不想在多个主机上运行ansible。
//我出于好奇而尝试了它,并且直接在码头工人上使用ansible效果很好,...无论如何我都不喜欢解决方案。
#1 楼
借助于@Levi(参考Stackoverflow),我设法找到一种方法,使用ansibles docker连接驱动程序和Docker的远程API功能将straigt连接到docker容器中。首先,您必须公开API,默认情况下并非如此。只需将
-H tcp://0.0.0.0:1337
添加到systemd脚本的ExecStart
常量即可。然后重新加载启动脚本并重新启动docker服务。 (来自此博客文章)然后您可以像这样在清单文件中列出容器: to。
[containers]
container-name ansible_connection=docker ansible_docker_extra_args="-H tcp://1.2.3.4:1337"
这种实现方式的好处是,您可以混合通过SSH和Docker容器维护的“真实”主机/虚拟机。我不得不提到的一件事是,与使用SSH作为控制隧道相比,docker API的运行速度要慢得多。
此设置是非常不安全的,其唯一目的是解释该概念。在生产环境中使用它之前,您应该阅读安全功能,并尽可能限制对守护程序的访问。
评论
就像您说的那样,对于远程服务来说不安全,但是对于本地开发来说是一个很好的解决方案! +1
–马特奥(Mattao Gaggiano)
20年4月4日在15:13
#2 楼
它可以是三步过程使用以下命令创建剧本-
docker exec mycontainer /bin/sh -c "cmd1;cmd2;...;cmdn"
Docker文件入口点选项
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit "mycontainer"
评论
我看不到如何回答这个问题,您应该进行编辑以添加一些关于它如何远程工作的说明(而不是在Docker主机上)
–滕西拜
18年7月4日在15:23
我认为您有点误解了这个问题。我知道如何从主机系统执行docker容器中的命令,但我不仅想执行命令。我希望能够将Ansible用于docker容器,就像它们是独立主机一样。
– davidb
18年7月4日在17:35
评论
这个stackoverflow.com/a/41626257/3888850怎么样?好,谢谢!不知道为什么我没有自己找到那个帖子,.. o.O那会带来一些安全隐患,但是我可以解决!当我有机会尝试时,我将重新报告该问题,...
@Levi:感谢您的帮助,我回答了自己的帖子,以一种更易理解的方式对其进行了描述。
我认为docker图片应该是不可变的且无状态的。
@ 030我认为这取决于容器中的应用程序。在我的场景中,需要集中触发应用程序的签名更新和操作,我需要从外部验证docker容器中进程的进度是否触发SDN功能