使用Ansible,Jenkins和docker构建快速测试环境

时间:2015-07-31 09:43:20

标签: jenkins docker ansible

我打算用ansible,jenkins和docker一起构建测试环境。计划是这样的。

为您在环境中使用的每个工具创建ansible playbooks,并将它们存储在git上。 使用jenkins创建作业以在dev服务器上创建docker容器,并使用ansible playbooks来配置docker容器。 将创建Jenkins作业,以便用户可以选择他们想要与docker容器一起使用的playbooks,并相应地构建容器。

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

Devops

我看到的好处是

自动复制精确的生产环境 根据要求扩展您的测试环境 在单个服务器上提供不同的应用程序测试平台 更快的集成测试。
推广敏捷方法论 自由开发和定制测试环境 即使开发人员和测试人员对操作系统,配置一无所知,他们也可以自行创建环境 在干净的环境中测试应用程序的部署,这是一个全新的版本。

有没有人实现过这种类型的环境架构,我想讨论同样可行性的实际好处。

2 个答案:

答案 0 :(得分:4)

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

  • 定义Dockerfiles或chef / puppet / ansible / salt配置。与你的方法一样。

  • 将这些说明置于版本控制之下。与你的方法一样。

  • 使用Jenkins A来CI和每夜构建图像并将它们上载到注册表中。为了管理不同的版本和保留旧图像。这在您的图表中引入了一个图像注册表。

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

在这里,我将建立软件和构建奴隶本身分开。

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

  • 现在我选择要永久部署的容器和构建我想要按需部署的容器。

    • 构建作业大量使用的永久性容器作为群体奴隶启动,每天由夜间构建进行交换。
    • Ad-hoc容器由Jenkins-Docker-Plugin管理。
    • 对于更复杂的环境配置,我使用docker-compose来管理临时可用性。
    • 对于ad-hoc环境,即运行这些配置的VM,我使用docker-swarm。

图: enter image description here

答案 1 :(得分:0)

如果要在给定操作系统上使用具有最新可用版本的给定程序包的docker镜像进行测试,则需要设置每晚的docker image rebuild。我有一个非常小的,简单的项目,可以帮助您在https://github.com/zbeekman/nightly-docker-rebuild进行夜间docker图像重建。我使用它来从源代码重建GCC主干,但您可以轻松地使用它从包管理器安装/升级包,或者处理可能在上游更新并对您的项目产生潜在影响的任何其他构建/运行时依赖项。通过这种方式,您可以在客户/用户遇到问题之前尽早发现问题。