前回はEC2上にLaravelアプリケーションのデプロイを手動で行いました。
今回は、このデプロイをAWS Code Deployを利用して自動化してみようと思います!
・・・やってみると、以外にいろいろな設定が必要で苦労したので、ここにちゃんとメモしておこうと思います。案外難しかった、、、
Contents
IAMの設定
はじめに、IAMで2つのポリシーの設定が必要です。
1, Code DeployがEC2を操作するためのポリシー
ロールを使用するサービスにCode Deployを指定して、新しいロールを作成します。
できました!
2, EC2がCode Deploy関連リソースにアクセスするためのロール
これらのロールは後で使います。IAMでの作業はいったんおしまい。
EC2の設定
EC2へのCode Deploy Agentのインストール
次はEC2インスタンスに先ほどのEC2RoleforAWSCodeDeployポリシーを付与したロールを割り当てます。
次はEC2のインスタンスにSSHで接続。Code Deploy Agentのインストールを行います。以下のコマンドを打ち込んでいきます。
(以下の手順はAWSの公式マニュアルで紹介されています。 https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html )
sudo yum update
sudo yum install ruby ## Code Deploy Agentを動かすためにRubyがいるようです。
sudo yum install wget ## 最初から入ってると思うけど一応・・
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-ap-northeast-1/latest/install . --region ap-northeast-1chmod +x ./install ## S3のインストールキットからCodeDeployAgentをダウンロード
chmod +x ./install
sudo ./install auto
これらを実行した後に、CodeDeployAgentが起動したか確認します。
sudo service codedeploy-agent status
タグとキーの追加
後でCode Deployからデプロイ対象のEC2インスタンスを指定する目的で、目印となるタグとキーを追加しておきます。
Code Deployの設定とリンクしていればなんでもよいです。
(ここでは、タグ:AutoDeploy キー:Trueと設定しました)
アプリケーション側の設定
こちらもAWSの公式マニュアルに沿って進めていきます。https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/application-revisions-appspec-file.html#add-appspec-file-server
AppSpecファイルってなんだ?と思ってマニュアルを読んでみましたが、要はリポジトリとデプロイ先のマッピングなどの情報を記載しておくためのファイルで、これがないとデプロイができないようです。
というわけで、appspecファイルを作成していきます。
これをアプリケーションのソールのルートに配置しておく必要があります。
テンプレートは公式マニュアルのものを使って、以下のようなものを作成しました。hooksは、インストールやアプリ起動後に実行するスクリプトを指定できます。自分はPHP Laravelのプロジェクトをデプロイするため、composerのupdateなどを記述したスクリプトを買いています。
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html/【Laravelプロジェクト名】
hooks:
AfterInstall:
- location: /scripts/【スクリプト名】
timeout: 180
これでアプリ側の設定も完了です。
最後はCode Deploy側でデプロイの設定をしていきます。
Code Deploy側の設定
まず、Code Deployで新規アプリケーションの作成をクリック。
アプリケーションの名前は何でも大丈夫です。
Deploymentグループを作成
次はDeploymentグループを作成します。
デプロイグループ名
これはなんでもよいです。
サービスロール
Code Deployに与えるロールのコードを指定します。
これは、先ほど作成したIAMのCodeDeploy用ロールから取得します。
指定形式がARNとありますが、これはIAMの詳細ページから確認できます。
環境設定
今回はEC2インスタンスにデプロイするので、EC2インスタンスを指定します。
ここで、タグとキーの設定がでてきますが、先ほどEC2側に設定したタグとキーを設定すると、CodeDeploy側で、そのタグが設定されているインスタンスをデプロイ対象とみなします。
以上でグループの設定が完了です。
デプロイの作成
最後にデプロイの実行設定です。
デプロイの作成ボタンをクリックし、ソースコードのリポジトリを指定します。今回はGithub上のコードをデプロイしたいので、Githubとの連携を行っていきます。
Gihubアカウントを入力し、Githubへ接続ボタンを押すと、下のポップアップがでてきます。
Githubリポジトリ名
Githubユーサ名/リポジトリ名 で指定します。
Commit ID
Githubのデプロイ対象とするコミットのバージョンのIDを指定します。
これはgithub上のコミット履歴から確認できます。
これでデプロイ設定が完了です。
作成完了を押すと、デプロイが動き出します。
実はまだこれだけだとデプロイの開始はマニュアルなので、完全自動化に向けては、もう一歩、CI(継続的インテグレーション)の仕組みを作りこむ必要があります。そちらは次回、解説させていただこうと思います。
本日も最後までご覧いただき、ありがとうごさいました!
つづく
コメントを残す