Chef infra 厨师长最佳实践循环相同的食谱

Chef infra 厨师长最佳实践循环相同的食谱,chef-infra,aws-opsworks,cookbook,recipe,Chef Infra,Aws Opsworks,Cookbook,Recipe,有人能向厨师推荐一种处理循环和运行某个食谱的最佳方法吗。例如,我的食谱中就有这个 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

有人能向厨师推荐一种处理循环和运行某个食谱的最佳方法吗。例如,我的食谱中就有这个

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个堆栈中,我们有许多部署在不同服务器层的应用程序。我们这样做是因为它不能在两个不同的堆栈中共享RDS。它肯定是有效的,现在当我们循环应用程序时,我们已经做了一个技巧,它将根据它的类型运行这个配方。不幸的是,include_配方不是一个好的选择,为了配方,我们不想通过注入更多的行来维持这个配方


对这种情况有什么建议吗?

不清楚您的要求是什么
include_recipe
是从一个配方运行另一个配方的助手。它本身不是一种资源,但您可以使用基本上与您所拥有的代码相同的代码(给出或接受它可能应该是
app\u settings[“type”]
)。

不清楚您要的是什么
include_recipe
是从一个配方运行另一个配方的助手。它本身不是一种资源,但你可以使用与你所拥有的代码基本相同的代码(给出或接受它可能应该是
app\u settings[“type”]
)。

如果你在同一台机器上部署了每种类型的多个应用程序,请将你的配方移动到一个应用程序中

一个配方可以只包含一次,所以你的循环不会对同一类型的多个应用程序起作用

然后,您将在case语句中用资源定义替换我们的
include\u recipe
调用


如果没有更多关于配方的详细信息,我无法给出更多的建议。

如果您在同一台机器上部署了多种不同类型的应用程序,请将配方移动到一个应用程序中

一个配方可以只包含一次,所以你的循环不会对同一类型的多个应用程序起作用

然后,您将在case语句中用资源定义替换我们的
include\u recipe
调用


如果没有更多关于你食谱的细节,我就无法给出更多的建议。

谢谢!我会查出来的谢谢!我来看看这个