我应该使用include_recipe还是将配方添加到run_list?

试图找出一个大型项目的最佳方法。 什么时候使用include_recipe来添加配方中的配方是合适的,而不是将配方添加到run_list ? 有一个好的经验法则?

正如我所看到的,任何配方都应该能够在空机器上运行。 所以如果一些配方A依赖于配方B在它之前运行,我总是使用include_recipe。

例如:2食谱,tomcat和java。 Tomcat需要java。

  1. 当一些用户想要安装tomcat时,他可能不知道他实际上需要其他的一些菜谱来安装它。 他运行tomcat的配方,要么失败,一些完全无用的错误信息,如“没有发现Java”,甚至更糟 – 它成功,但当然用户无法启动tomcat,因为他没有安装java。

  2. 但是当tomcat cookbook中有一个include_recipe 'java'行时,也需要在元数据中depends 'java'行,当用户尝试安装tomcat时,会看到可以理解的错误信息:“cookbook java not found”。 这种方式实际上用户可以下载自己的依赖关系(甚至用一些自动工具),而不需要真正运行食谱,而是读取元数据。

所有的逻辑应该用运行列表来控制。 食谱,尽可能地尝试,不像人们想要的那样重复使用。 所有的include_recipe都是添加另一个地方,用户必须查看哪些运行列表将要做什么,使其明确,并把它放在运行列表。