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

时间:2013-06-05 18:36:22

标签: chef recipe chef-recipe

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

2 个答案:

答案 0 :(得分:76)

正如我所看到的,任何配方都应该能够独立在空机器上运行。因此,如果某个配方A依赖于之前运行的配方B,我总是使用include_recipe。

例如:2本烹饪书,tomcat和java。 Tomcat需要java。

  1. 当某个用户想要安装tomcat时,他可能不知道他实际上需要一些其他的食谱来安装它。他运行tomcat配方并且它失败了一些完全没有帮助的错误消息,如“没有找到java”,甚至更糟 - 它成功了,但当然用户无法启动tomcat,因为他没有安装java。

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

答案 1 :(得分:2)

应使用运行列表控制所有逻辑。 Cookbook尽可能地尝试,并不像人们想的那样可重复使用。所有include_recipe都会添加另一个地方,用户必须查看运行列表将要执行的操作,以便将其显式化并将其放入运行列表中。

相关问题