「クリーンな」既製の AMI を使用するように起動設定を構成します - これらを使用します: http://aws.amazon.com/amazon-linux-ami/
これらの AMI の機能の 1 つは CloudInit です - https://help.ubuntu.com/community/CloudInit
この機能により、新しく生成されたプレーン バニラ EC2 インスタンスにデータを配信できます。具体的には、インスタンスに実行するスクリプトを与えます。
このスクリプトは (簡単に言えば) 次のことを行います。
- 自身をアップグレードします (すべてのセキュリティ パッチとバグ修正が適用されていることを確認するため)。
- Git と Puppet をインストールします。
- Github から Git リポジトリをクローンします。
- puppet スクリプト (リポジトリの一部) を適用して、それ自体を構成します。Puppet は、残りの必要なソフトウェア モジュールをインストールします。
事前構成された AMI から起動するよりも時間がかかりますが、ソフトウェアを更新するたびに (週に数回) これらの AMI を実際に作成するプロセスをスキップし、サーバーは常に「クリーン」です。手動パッチはありません。すべてのソフトウェアモジュールは最新です。
ここで、ソフトウェアをアップグレードするために、ローカルの boto スクリプトを使用します。このスクリプトは、古いコードを実行しているサーバーを 1 つずつ強制終了します。Auto Scaling メカニズムは、新しい (およびアップグレードされた) サーバーを起動します。
を使用すると、ヘルスチェックに失敗するまで、ELB がシャットダウン中のインスタンスにトラフィックを送信し続けるas-terminate-instance-in-auto-scaling-group
ため、必ず使用してください。ec2-terminate-instance
興味深い関連ブログ投稿: http://blog.codento.com/2012/02/hello-ec2-part-1-bootstrapping-instances-with-cloud-init-git-and-puppet/