CodeDeploy は、問題に対する優れたソリューションです。正しく構成されていれば、自動スケーリングによってスピンアップされた新しい EC2 インスタンスに自動的にデプロイできます。これを機能させるには、次の 3 つのものが必要です。
- 最新のホスト エージェントがインストールされ、実行されているインスタンスを起動する Auto Scaling グループ。
- その Auto Scaling グループに (タグではなく Auto Scaling グループとして) デプロイするように構成された Code Deploy デプロイ グループ。
- 新しいインスタンスに自動的にデプロイするターゲット リビジョン。ターゲット リビジョンがない場合、Code Deploy はインスタンスの起動を認識しますが、何もデプロイしません。
開始に役立つチュートリアルを次に示します:チュートリアル: AWS CodeDeploy を使用してアプリケーションを Auto Scaling グループにデプロイします。このチュートリアルでは、エージェントがインストールされた AMI をベイクし、デプロイ グループをセットアップしてコードを新しいインスタンスにデプロイする方法について説明します。
エージェントがプリインストールされた AMI をベイクする場合は、エージェントのリリースでそのイメージを定期的に更新する必要があります。エージェントがインストールされると、それ自体が更新されますが、エージェントのバージョンが Code Deploy でサポートされなくなった場合、Auto Scaling はインスタンスの起動に失敗する可能性があります。実際の運用では、AMI を作成せず、代わりにインスタンスの起動時に最新のエージェントをインストールすることをお勧めします。(この方法をすぐに使用できるように、チュートリアルを更新する必要があります。)
起動時に最新のインストーラーを自動的にダウンロードして実行するようにインスタンスをセットアップできます。基本的に、Auto Scaling グループを作成するときに、シェル スクリプトをユーザー データとして貼り付けます。
たとえば、Amazon Linux で次のスクリプトをテストしました ( Set Up a New Amazon EC2 Instance to Work with AWS CodeDeploy から取得):
#!/bin/bash
yum -y update
yum install -y aws-cli
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
chmod +x ./install
./install auto
user data
Auto Scaling グループを作成するときと同様に、これを貼り付けることができるはずです。Auto Scaling の場合は、configure details -> advanced details で起動設定を作成するときに設定します。
展開グループを設定し、ターゲット リビジョンを設定するには:
- デプロイ グループを作成または編集して、Auto Scaling グループを含めます。(注: これが機能するには、最初に Auto Scaling グループが存在している必要があります。)
- Auto Scaling グループに少なくとも 1 つのインスタンスがあることを確認してください。
- 自動デプロイするアーティファクト バンドルをデプロイ グループにデプロイします。
- 手順 3 が成功したと仮定すると、展開グループにはそのバンドル セットがターゲット リビジョンとして設定されます。自動展開の場合、これは展開する既知の適切なリビジョンになります。
その Auto Scaling グループで Auto Scaling によって起動される新しいインスタンスには、デプロイ グループのターゲット リビジョンが自動的にデプロイされます。失敗した手動展開からのリビジョンは、自動的に展開されません。