具有多层的 AWS OpsWorks 部署

具有多层的 AWS OpsWorks 部署

在我们的 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 层。

相关内容