使用ansible配置docker容器

时间:2016-12-08 06:36:40

标签: docker configuration ansible containers configuration-management

从容器内部配置带有 ansible 的docker容器,提供ansible命令作为入口点是不错的做法?使用ansible,根据某些查找条件配置事物会更容易。此ansible命令也将启动提供的服务。这是好事还是邪恶?另一种选择是使用shell脚本,第三种是在Dockerfile中进行所有配置(容易出错)。最后一个选项是使用任何方法(手动或CM)配置一些基本容器并提交更改(难以重现)。哪个是配置容器的首选方法?

IMO,使用ansible将业务逻辑与docker平台分离,因此可以通过一个单一的ansible命令轻松地在不同的虚拟化平台或裸机上运行相同的服务。但是有缺点吗?

此外,是否赞同使用ansible配置正在运行的容器,或者这是否违反了docker原则?

2 个答案:

答案 0 :(得分:0)

Ansible通常是从容器外部执行的,但它不一定是,它取决于你想要实现的目标。例如,本地安装的Ansible通常用于小型开发环境,例如开发人员笔记本电脑,而单独的服务器则用于云环境,其中有多个系统,容器等。

答案 1 :(得分:0)

我刚刚花了几个星期看看这个问题。 对于相同的应用程序(基于tomee和mongo),我已经完成了以下模式:

  • 只需安排部署到一个或多个虚拟机
  • 创建容器,然后像你一样在自己内部运行ansible脚本
  • 使用ansible-container

我按顺序做了它们,因为它意味着从简单到复杂。我是产品经理,我的不同客户处于不同的成熟水平,所以我和你有同样的担忧。我想要一个可重复的脚本,它既适用于VM(甚至是裸机),也适用于容器化环境。

第一种解决方案是学习的好方法。 第二种解决方案有效,但这意味着您的容器比它们应该更大。 第三种解决方案更好,原因如下:

  • 它基本上迫使你开始使用角色。如果你还没有开始使用角色,你应该。
  • 它有效地将业务逻辑与docker分离并使其保持安全(甚至超过第二个解决方案)
  • 如果要部署到VM,则应该可以使用角色中的剧本
  • 如果您使用docker-compose进行部署,则可以进行ansible-container push,然后为客户提供可以执行的docker-compose文件
  • 如果你部署到云,ansible-container会创建一个playbook来拉动和运行容器(我以为我还在使用这个容器)