6

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

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

我不想puppet apply在我的本地开发机器上,这很容易搞砸。我有一个全新的远程盒子,我想申请。我也看不出木偶大师如何帮助我。稍后我可能会使用 puppetmaster 进行生产部署,但现在,我只想让我的代码正常工作。

所以我整理了一个快速的 shell 脚本,它将本地 puppet 模块路径中的不同目录同步到远程机器上的 /tmp,然后运行puppet apply​​. 这非常不方便。它很慢,尤其是当我们谈论语法错误时。

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

似乎没有这种情况,但是其他人如何处理呢?我编写 Puppet 脚本的经历让我非常沮丧,就像现在一样。

4

7 回答 7

9

我建议使用 Vagrant。如果您没有测试 puppet master 设置,您可以使用内置的配置器集成

完成所有设置后,您可以运行vagrant provision或仅在 vagrant vm 上运行 puppet apply。

这是一篇相关文章,您可能会发现也有帮助。

于 2012-07-05T13:12:17.807 回答
3

我还会使用rspec-puppetpuppetlabs-spec-helper看一下 puppet rpsec 测试。rspec-puppet-init 将破坏 puppet doc 和 geppetto 以及可能由于符号链接而导致的其他一些事情,并且hiera 存在一些问题,但是测试很容易设置并且运行良好,并且也可以绑定到 jenkins/哈德逊

于 2012-07-20T21:54:02.903 回答
2

我通常对我的 Puppet 脚本进行两​​个级别的测试。

用于快速反馈的单元测试:使用rspec-puppet编写,这些为正在测试的类/定义/等编译 Puppet 目录,并对其进行断言。每次我进行小的更改时在本地运行,每次签入时在构建服务器上运行。测试运行速度很快(<10 秒),并找出语法和依赖性问题。

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

Given I am SSHed into Vagrant box "webserver"
When I type "php --version"
Then the output should include "PHP 5.4.11"
于 2013-05-12T12:11:58.203 回答
1

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

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

终端 1) 编辑 puppet 清单、类、ruby 代码等终端 2) 运行“vagrant provision”,它简单地应用 puppet 以及您想要传递的任何事实等。终端 3) 将“vagrant ssh”放入框中,所以我可以在木偶工作时四处闲逛

希望这可以帮助!

于 2014-02-21T15:27:08.260 回答
0

我在看另一个问题时偶然发现了臀部。如果您使用的是 git,它可能会很有用。有一个幻灯片可用。

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

于 2012-07-14T17:47:31.390 回答
0

你为什么不想经营一个傀儡师?它正是为这种情况而创建的。

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

于 2014-06-12T10:45:39.460 回答
0

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

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

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

为了了解该工具能够检测到哪些错误,我们对 150 多个公共 Puppet 脚本进行了大规模评估。结果可在此处获得:http ://citac.github.io/eval/ 请随时提供反馈、拉取请求等。祝您测试愉快!

于 2016-07-31T08:20:55.417 回答