testing厨师食谱的最佳做法?

我的团队创造了大量的厨师食谱。 我想知道我应该看什么方法和框架,所以我们可以开始创buildtesting,以确保我们的节点configuration正确?

你可能(也)看着这个stream浪汉 。
一个video展示了如何使用stream浪汉和厨师烹饪书的组合。 在Opscode网站上有一个专门针对stream浪和厨师的页面 (更新2015-01-23:页面已经消失…)。

cucumber-chefruby和最近发行的书籍纳尔逊史密斯等 – “与厨师testing驱动的基础设施”,使用该gem – http://www.cucumber-chef.org/

刚刚从我的github watchlist记得这个: https : //github.com/gregretkowski/vmth/

VMTH(虚拟机testing工具)提供了一个机制来testing你的基础设施自动化 – 木偶策略,厨师食谱,发布部署脚本等。它使用现代虚拟机监视器(如qemu)的特性来快照系统状态,然后重置在每个testing之后的状态,以便可以在VM实例上连续执行一系列testing

根据我的经验,真正做到这一点的唯一方法是使用分级环境和谨慎的开发实践。 嘲笑要做的实际工作是难以置信的混乱和脆弱的,CItesting套件在提交或推动上运行是很多努力来写和维护(虽然厨师可能比Puppet更好,这是我的主要经验),并花费大量的时间来运行。

编辑

就在我写这篇文章之后,我突然意识到,可能有办法用联合文件系统和大量的脚手架对Chef / Puppet食谱进行相当高效的“单元”testing。 然而,我找不到任何人已经在这方面做了什么。 我可能刚刚发现自己是一个项目。

有很多select。

  • 斯蒂芬·纳尔逊 – 史密斯的 黄瓜厨师 rubygem,以及相关/随书 。
  • AJ Christensen 最小的烹饪书。
  • 由于Mitchell Hashimoto,无法提供testing虚拟机

Opscode在Chef开发路线图上提供了“no-op”支持,这将有助于testing。 我们确实认为 ,“无操作”并不一定是你想要的,而是理解对function的渴望。

这里的一些答案似乎有点老了。 对于CI和本地testing,我会考虑利用像Test Kitchen这样的testing工具工具,如果你已经使用它,它也支持Vagrant。

它将允许你运行你的coobkooks来抵御那里的许多云和虚拟化解决scheme:EC2,Digital Ocean,Vagrant,Docker等等。

它还有一些插件可以让你运行当前存在的许多基础设施testing工具之一:

  • serverspec – 最stream行的testing框架。
  • 高斯 – YAML,简单,自包含的二进制,速度非常快。
  • inspec – 将其视为serverspec改进(由厨师家伙写的)。
  • testinfra – 基于Python的服务器testing框架。