任何人都可以向厨师建议处理循环和运行某种食谱的最佳方法。例如,我的食谱中有这个
apps_databag = search("aws_opsworks_app")
apps_databag.each do |app_settings|
case app_settings['app_source']['type']
when 's3'
include_recipe 'recipe'
when 'git'
include_recipe 'recipe2'
else
Chef::Log.warn("*** WARNING!! Cannot find app deployment type. Please check App .. Aborting ***")
end
背景..在1个堆栈中,我们有许多部署在不同服务器层的APP。我们这样做是因为它无法在两个不同的堆栈中共享RDS。它确实有效,现在当我们循环APP时,我们已经做了一个技巧,根据它的类型运行这个配方不幸的是include_recipe不是一个好的选择,为了配方我们不要&# 39;我想通过注入更多行来使这个食谱变得血腥
对此方案的任何建议?
答案 0 :(得分:2)
如果您要在同一台计算机上部署多种类型的应用,请将您的配方移到custom resource/LWRP。
配方只能包含一次,因此您的循环不适用于相同类型的多个应用。
然后,您将在案例陈述中用资源定义替换我们的include_recipe
调用。
如果没有关于食谱中的内容的更多细节,我无法提供更多建议。
答案 1 :(得分:0)
不清楚你要求的是什么。 include_recipe
是从另一个处方运行一个食谱的助手。它本身并不是一种资源,但您可以使用基本上与您所拥有的代码相同的代码(给予或接受它应该是app_settings["type"]
)。