在远程计算机上测试木偶脚本真的没有简单的方法吗?

时间:2012-07-04 15:06:03

标签: puppet

我正在尝试使用Puppet脚本进行部署。

我发现编写这些脚本的过程中最困难的部分是迭代测试它们。

我不想在我的本地开发机器上puppet apply,这可能会搞砸了。我有一个干净的远程盒子,我想申请。我也看不到木偶大师如何帮助我;我可能会在以后使用puppetmaster进行生产部署,但就目前而言,我只想让我的代码正常工作。

所以我整理了一个快速的shell脚本,它将我的本地puppet模块路径中的不同目录与远程机器上的/ tmp进行rsync,然后运行puppet apply。这非常不方便。这很慢,特别是如果我们谈论语法错误。

我认为我真正想要的就是像puppetd< - > puppetmaster连接,远程机器上的puppetd接收已编译的清单。只是一个通过SSH连接的adhoc-one,无需实际设置Puppetmaster,处理证书等puppet apply user@host

似乎没有那种,但其他人如何处理这个?我在Puppet脚本上工作的经历对我来说是非常令人沮丧的。

7 个答案:

答案 0 :(得分:9)

我建议使用Vagrant。如果您没有测试木偶主设置,可以使用内置的provisioner integration

一旦完成所有设置,您就可以运行 vagrant provision ,或者只是在vagrant vm上运行puppet apply。

Here's您可能会发现有用的相关文章。

答案 1 :(得分:3)

我还会使用rspec-puppetpuppetlabs-spec-helper来查看puppet rpsec测试。 rspec-puppet-init将打破puppet doc和geppetto以及其他一些由于符号链接而导致的问题,并且有一些issues with hiera,但测试很容易设置,否则运行良好,也可以绑定到詹金斯/哈德森。

答案 2 :(得分:2)

我的Puppet脚本通常有两个级别的测试。

快速反馈的单元测试:使用rspec-puppet编写,这些编译了正在测试的类/ define / etc的Puppet目录,并对其进行断言。每次我进行一次小的更改时都会在本地运行,每次我都检查时都会在构建服务器上运行。测试运行得很快(<10秒),然后选择语法和依赖项问题。

功能测试以确保其真正有效:使用CucumberAruba库一起编写。当我完成一个功能的实现并且单元测试通过时,这些测试会为VM(使用Vagrant)提供适当的Puppet清单,登录并对VM的状态进行断言。测试本身看起来像:

Given I am SSHed into Vagrant box "webserver"
When I type "php --version"
Then the output should include "PHP 5.4.11"

答案 3 :(得分:1)

Vagrant是我发现的最快速的基础设施开发环境。它最接近(99%)将反映您的生产设置,并且您可以解释木偶中的微小差异,因此一切都按预期工作。它需要大约30分钟的时间才能开始使用它,并且会在节省的时间内多次支付你的文件复制脚本:)

如果它可视化有帮助,我的桌面上有3个终端并排:

终端1)编辑木偶清单,类,红宝石代码等 终端2)运行“流浪汉条款”,简单地做一个木偶申请,以及你要通过的任何事实,等等。 终端3)'流浪汉ssh'进入盒子,所以当木偶正在做它的工作时我可以四处寻找

希望这有帮助!

答案 4 :(得分:0)

我在rump时偶然发现了another question。如果您正在使用git,它可能会有用。有a slide deck可用。

来自README.md:“Rump可以帮助您在本地针对Git结帐运行Puppet。”

答案 5 :(得分:0)

你为什么不想经营木偶?它是为这种情况而创建的。

如果您绝对无法运行puppetmaster,那么您必须将您的puppet调用包装在另一个首先下载该文件的脚本中(使用curl或wget)并在成功下载后应用它们。鉴于puppetmaster是一个相当简单的应用程序,我不知道如何不使用它会更好。

答案 6 :(得分:0)

您可能对citac感兴趣,Citac是一个用于自动测试Puppet脚本的工具包。它可以在Github上找到:https://github.com/citac/citac

Citac系统地以各种配置执行您的Puppet清单,模仿瞬态系统故障,不同的资源执行顺序等。生成的测试报告会告知您有关非幂等资源,融合相关问题等的问题。

该工具使用Docker容器执行,因此您的系统在测试时保持不变。在执行Puppet脚本期间跟踪状态更改,并生成详细的测试报告。

为了了解该工具能够检测到哪些错误,已执行了包含150多个公共Puppet脚本的大规模评估。结果如下:http://citac.github.io/eval/ 请随时提供反馈,拉取请求等。快乐测试!