我在after_restart.rb中有代码,我只想在rails-app图层中重启时运行。我也有一个延迟的作业自定义图层,如果在延迟的作业层重新启动应用程序,则不应运行此代码。两个图层都在相同的实例上。我尝试了使用node[:opsworks][:instance][:layers]
的建议,但因为它是同一个实例,所以我得到["rails-app", "utillayer"]
两个部署(同样,两个部署都在同一个实例上,一个用于rails-app,另一个用于名为utillayer的延迟作业)
我希望有一种方法可以识别部署正在进行的层,并将其与if语句联系起来,以便在重新启动位于“rails app”层时运行代码
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
您之后的特定节点json是:node [:opsworks] [:instance] [:layers]
node_layers = node[:opsworks][:instance][:layers]
## layer must belong to either rails-app OR custom
if (node_layers.include?("rails-app") || node_layers.include?("custom"))
// do stuff
end
## layer must belong to alteast rails-app
if (node_layers.include?("rails-app")
// do stuff
end
## layer must belong to BOTH layer
if node_layers.include?("rails-app") && node_layers.include?("workers")
// do stuff
end