在我们的opsworks堆栈中,我们有一个包含2个App Server的堆栈 – 1个Java和1个PHP。 每个App Server目前每个都有一个实例。
我们在这个堆栈中也有几个应用程序–1个应用程序部署到Java应用程序服务器/实例,其余的部署到PHP服务器/实例。
当我们部署一个应用程序,在“高级>>”下,两个应用程序服务器都打勾。 我们想知道是否有一种方法来设置每个应用程序,这样它的部署默认为它当前所在的应用程序服务器。 例如,将PHP应用程序部署到只有PHP应用程序服务器。
现在,这不是一个大问题,因为部署一个应用程序,比如一个PHP应用程序到这两个应用程序服务器意味着PHP应用服务器部署成功,而Java应用服务器部署失败(并且很快失败),而不会影响PHP的成功App Server部署。
这更是一个整理松散结局的例子。
在opsworks食谱,或者你自己的部署失败? 大多数opsworks部署配方都有一个保护措施,以确保它只能在图层中的实例上运行。 例如,在java部署配方中,它会保护配方只在应用程序types为java时才运行。
node[:deploy].each do |application, deploy| if deploy[:application_type] != 'php' Chef::Log.debug("Skipping deploy::php application #{application} as it is not an PHP app") next end # deployment actions for application types in this layer end
我重现了上面的守卫。 这当然假定PHP应用程序在PHP层,而Java应用程序在Java层。