使用Ansible,Jenkins和docker工具来构build快速的testing环境

我正在计划用可靠的,jenkins和docker工人一起build造testing环境。计划是这样的。

为你在环境中使用的每一个工具创build一个可靠的剧本,并将它们存储在git上。 使用jenkins创build工作在dev服务器上创builddocker容器,并使用合适的剧本来configurationdocker容器。 Jenkins作业将被创build,以便用户可以select他们想要与docker容器一起使用的剧本,并相应地构build容器。

整个概念可以概括为如下图所示。

DEVOPS

我看到的好处是

自动复制精确的生产环境。
根据需要缩放您的testing环境。
为单个服务器上的应用程序testing提供不同的平台。
更快的集成testing。
推广敏捷方法。
自由开发和定制testing环境。
开发人员和testing人员可以自行创build环境,即使他们对操作系统,configuration没有任何了解。
在干净的环境中testing应用程序的部署。

有没有人实施过这样的环境架构,我想讨论一下这个可行性的实际好处。

我正在使用类似但不同的方法:

  • 定义Dockerfiles或厨师/木偶/ ansible /食盐供应。 就像你的方法一样。

  • 把这些描述放在版本控制之下。 就像你的方法一样。

  • 使用Jenkins A来CI-和每晚构build图像并将其上传到registry中。 为了pipe理不同的版本和保留旧的图像。 这将在您的图表中引入一个图像registry。

  • 用Jenkins-Swarm从属程序扩展这些图像。 这可以在您的Jenkins环境中进行临时部署。

在这里,我将软件的构build与构build奴隶本身的构build分开。

  • 我部署一个Jenkins B,以便在环境中构build软件。

  • 现在我select要永久部署的容器,并构build要按需部署的容器。

    • 在build筑工作中大量使用的永久性容器,起始于群居奴隶,每天晚上进行交换。
    • Ad-hoc容器由Jenkins-Docker-Pluginpipe理。
    • 对于更复杂的环境configuration,我使用docker-compose来pipe理ad-hoc可用性。
    • 对于ad-hoc环境,即运行这些configuration的虚拟机,我使用docker-swarm。

图: 在这里输入图像说明

如果你想用一个给定的操作系统上给定包的最新可用版本的docker镜像进行testing,那么你需要设置每晚的docker镜像重build。 我有一个非常小的,简单的项目,可以让你启动和夜间docker图像重build在https://github.com/zbeekman/nightly-docker-rebuild 。 我使用这个来从源代码重buildGCC中继,但是您可以轻松地使用它来从软件包pipe理器安装/升级软件包,或者处理任何其他可能在上游更新并对您的项目有潜在影响的构build/运行时依赖。 这样,您可以在客户/用户遇到问题之前及早发现问题。