Chef infra 在同一本食谱中使用多个食谱

Chef infra 在同一本食谱中使用多个食谱,chef-infra,chef-recipe,databags,Chef Infra,Chef Recipe,Databags,我有一本有四种食谱的厨师食谱。每个配方配置一个web应用程序: myCookbook | |_ _ recipes |_ _ default.rb |_ _ app1.rb |_ _ app2.rb |_ _ app3.rb |_ _ app4.rb 我已将此cookbook配置为基于默认的.rb配方更新应用程序,该配方仅迭代其他web应用程序配方并运行它们。这本食谱由数据包中更新的web应用程序版本开始 因为我

我有一本有四种食谱的厨师食谱。每个配方配置一个web应用程序:

myCookbook
   |
   |_ _ recipes
       |_ _ default.rb
       |_ _ app1.rb
       |_ _ app2.rb
       |_ _ app3.rb
       |_ _ app4.rb
我已将此cookbook配置为基于默认的.rb配方更新应用程序,该配方仅迭代其他web应用程序配方并运行它们。这本食谱由数据包中更新的web应用程序版本开始

因为我把所有的应用程序放在一本食谱中,如果我想更新一个应用程序,那么我必须更新它们。我可以手动覆盖runlist以只部署一个应用程序,但是有没有办法
“刀差”默认配方(或类似的东西)中的数据包,以便仅运行更新的web应用版本的相应配方?

您必须使用本地副本实现差,以便进行幂等跟踪。总的来说,我建议你修改你的食谱,使之成为幂等式和收敛式。

你应该写自我收敛的食谱,而不是这个

如果在此处使用外部配方(默认配方)的主要原因是避免在所有配方(更新应用程序的代码)上反复编写相同的代码,那么您应该尝试编写一个或多个可供所有应用程序配方使用的代码

在线厨师文档有足够的信息来做这件事,如果你有基本的Ruby知识,这也很容易