web-dev-qa-db-ja.com

複数のレイヤーを使用したAWSOpsWorksのデプロイ

Opsworksスタックには、2つのアプリケーションサーバー(1 Java)と1つのPHP)を含むスタックがあります。現在、各アプリケーションサーバーにはそれぞれ1つのインスタンスがあります。

このスタックにはいくつかのアプリもあります-1つのアプリはJavaアプリサーバー/インスタンスにデプロイされ、残りはPHPサーバー/インスタンスにデプロイされます。

アプリをデプロイすると、[詳細設定>>]で、両方のアプリサーバーにチェックマークが付きます。各アプリのデプロイがデフォルトで現在オンになっているアプリサーバーになるように、各アプリをセットアップする方法があるかどうか疑問に思っています。たとえば、PHPアプリを、PHP AppServerのみにデプロイします。

現時点では、これは大きな問題ではありません。たとえば、両方のアプリサーバーにPHPアプリをデプロイすると、PHP App Serverのデプロイは成功しますが、 Java App Serverの展開は、PHP App Serverの展開の成功に影響を与えることなく失敗します(そして非常に迅速に失敗します)。

これは、ルーズエンドを片付ける場合です。

2
alexmcroberts

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レイヤーにあることを前提としています。

2
dgtized