私の質問は基本的に2つの質問ですが、それらは密接に関連しているため、まとめて質問するのが理にかなっていると思いました。
ケース:
AWS Elastic Load Balancer の背後にある複数の AWS EC2 インスタンスに分散された Web アプリケーションを実行しています。
意図する目標:
a) 新しいアプリ コード (php) をデプロイする場合、すべての EC2 インスタンスに自動的に配布する必要があります。
b) 新しい EC2 インスタンスが追加されると、最新のアプリコードで自動的に「ブートストラップ」する必要があります
これまでの私の考え:
ad a)
phing (http://phing.info) がおそらくこの部分の答えです。おそらく、各 EC2 インスタンスに複数のターゲットを追加し、デプロイを実行すると、すべてのマシンにデプロイされます。おそらく残念ながら並行していません。しかし、EC2 インスタンスがロードバランサーで「一時停止」され、アップグレードされ、再び「一時停止」されて次のインスタンスに移行するようにスクリプトを作成する場合にも、これは有益な場合があります。
ad b)
どうすればそれを達成できるかわかりません。従来の「ハードウェア ベースのセットアップ」では、おそらくネットワーク ストレージ デバイスに「アプリ コード」ボリュームがあり、新しいサーバーを追加するときにそのボリュームを接続するだけでした。新しいアプリコードをデプロイするとき、このボリュームへのデプロイ操作は 1 回だけでした。そのため、新しくブートストラップされたマシン/インスタンスがアプリコードをダウンロードする場所から「中央ストレージ」が必要です。git も考えましたが、やはり git はデプロイ ツールではなく、1 つとして強制的に使用するべきではないでしょう。
そのようなタスクのセットアップを見て、そのような状況に対するヒントやアイデアを聞いていただければ幸いです.
ありがとう、
ジョシュア