CI / CD与Jenkins和Vagrant合作

时间:2017-02-02 21:18:58

标签: jenkins vagrant puppet

我想构建一个Jenkins服务器,它将在Vagrant上运行我的puppet代码测试。我发现的问题是我们已经将服务器作为VM运行,无论是在vmWare还是AWS中,Vagrant都不能用作另一个虚拟化。

有没有人知道如何为我的木偶代码创建一个测试平台。我想在自己的节点上测试清单的部署,即如果我部署class web server或对其进行更改,我想检查它是否影响/中断其他类的部署。

想法是迭代所有类/角色,看看部署是否正在传递。我想让它自动化,独立于我们的工程师。目前我们正在使用vagrant up进行手动测试,但手动角色太多了。

我有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以使用DockerAWS provider进行Vagrant。

如果是AWS提供商,您需要设置RSync以将您的环境带入新启动的实例。

如果您的Vagrant脚本是健壮的,您可以将相同的脚本用于工作站上的本地部署和CI服务器上的AWS / Docker部署。

执行这些技术有一些缺点,在Docker中,您只能使用与Jenkins服务器运行相同的内核,如果是AWS,则会产生额外费用。但是,对于AWS,您不需要为Jenkins服务器分配尽可能多的资源,因此您甚至可以通过这种方式节省资金,因为只有在运行测试时才会使用额外的VM支付。确保在完成后关闭它们。

答案 1 :(得分:1)

你想使用流浪汉有什么特别的原因吗?我不确定你是否正在设置流浪汉的生产环境。

如果您不受流浪者的约束,我建议您考虑使用docker镜像来准备一个轻量级环境来运行您的设置和验证。

进行测试时,从包含puppet发行版的图像中旋转一个容器,然后在里面运行您的设置/测试。如果您有特殊的内核要求,请使用单独的jenkins slave / agent计算机,而不是在jenkins master上执行作业。

如果您不确定如何开始使用带有docker的jenkins,请查看Jenkins Documentation的示例部分。提供的示例显示了仍然有点新的声明性管道语法。还要考虑折叠的 Toggle Scripted Pipeline 部分,它们显示了对jenkins管道初学者更加宽容的groovy管道脚本。

这些应该是开始在docker中运行+测试你的puppet脚本的非常好的指针。对于构建和使用docker镜像,应该有足够的教程。

请告诉我这是否是正确方向的提示,或者我是否误解了你的问题。