在我们的 opsworks 堆栈中,我们有一个包含 2 个应用服务器的堆栈 - 1 个 Java 和 1 个 PHP。每个应用服务器目前各有 1 个实例。
我们在这个堆栈中也有几个应用程序 - 1 个应用程序部署到 Java 应用程序服务器/实例,而其余应用程序部署到 PHP 服务器/实例。
当我们部署应用程序时,在“高级 >>”下,两个应用服务器都被勾选。我们想知道是否有办法设置每个应用程序,以便将其部署默认为其当前所在的应用服务器。例如,将 PHP 应用程序部署到仅 PHP 应用服务器。
现在,这不是一个大问题,因为将应用程序(比如 PHP 应用程序)部署到两个应用服务器意味着 PHP 应用服务器部署成功,而 Java 应用服务器部署失败(并且很快失败)但不影响 PHP 应用服务器部署的成功。
这更像是一个收拾残局的例子。
答案1
部署失败是 opsworks 配方中的失败,还是您自己的失败?大多数 opsworks 部署配方都有一个保护程序,以确保它仅在层中的实例上运行。例如,在 java 部署配方中,它保护配方仅在应用程序类型为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 层。