Chef infra 如何在社区食谱的帮助下测试最终的厨师服务器配置?

Chef infra 如何在社区食谱的帮助下测试最终的厨师服务器配置?,chef-infra,cookbook,test-kitchen,Chef Infra,Cookbook,Test Kitchen,我看到大多数社区食谱都有测试。当我读到一些文章时,简单地说,这些测试可以被描述为单元测试(烹饪书是否做到了它所说的?)和集成测试(它在操作系统上工作吗?) 我使用Vagrant和Chef社区食谱建立了一个LAMP虚拟环境。现在我想测试一下 首先,我想在我的配置系统上使用Kitchen CI运行所有社区的集成测试。我认为这是创建者编写这些集成测试的原因之一,这样管理员就可以将所有测试放在一起并测试他们的系统。然而,经过一次小规模的研究,我发现烹饪书的测试方式有所不同,因此在我的系统上一次运行所有的

我看到大多数社区食谱都有测试。当我读到一些文章时,简单地说,这些测试可以被描述为单元测试(烹饪书是否做到了它所说的?)和集成测试(它在操作系统上工作吗?)

我使用Vagrant和Chef社区食谱建立了一个LAMP虚拟环境。现在我想测试一下

首先,我想在我的配置系统上使用Kitchen CI运行所有社区的集成测试。我认为这是创建者编写这些集成测试的原因之一,这样管理员就可以将所有测试放在一起并测试他们的系统。然而,经过一次小规模的研究,我发现烹饪书的测试方式有所不同,因此在我的系统上一次运行所有的烹饪书似乎并不容易

这是否意味着我应该自己编写测试?例如,使用Kitchen CI和serverspec。我想他们不需要太花哨,因为社区食谱已经过测试,但我仍然觉得检查服务是否正在运行以及配置文件是否存在是一个好主意

常见的工作流程是什么?自己写几个测试?还是仅仅“相信”社区食谱?或者有一种方法可以在配置操作系统后一起运行社区测试?

一种方法是使用cookbook。如果运行中包含此食谱,则在运行结束时执行
文件/default/tests/
中的所有minitest测试,如果测试失败,则Chef运行失败;如果所有测试都通过,则Chef运行成功

然后,在社区测试的基础上,将一些特定的测试添加到
应用程序手册中的服务中


然而,我注意到小型测试的缺乏,越来越多的人使用
ServerSpec
。根据我的简要调查,在chef运行期间在您的机器上运行测试并不是您使用ServerSpec所做的事情。

您可以只为您的cookbook编写测试,以确保服务按照应用程序的要求正确运行

例如,如果您使用的是Apache,那么可以使用ServerSpec来确保Apache服务器正在运行并提供内容


这将测试您的应用程序/包装器cookbook是否安装了所有资源以及您希望社区cookbook安装的资源。

thx,只是为了澄清:我不能接受所有集成测试(假设来自apache、php和mysql社区cookbook)并使用test Kitchen一起运行它们,对吗?使用minitest处理程序,您不会“进行所有集成测试”。您只需将minitest处理程序cookbook添加到您的运行列表中,然后它将运行包含minitest的所有cookbook中的所有测试,这些测试将包含在您的(扩展的)运行列表中,位于您的运行列表的末尾。是的,社区cookbook会这样做。然而,我认为在节点完全配置了所有烹饪书之后再次检查所有内容可能是一个好主意。