なにかお手伝いできることがあればご連絡ください。
※Googleフォームが表示されます
自動でEC2にソースをデプロイにチャレンジです。
次回やるときの為ののメモです。
違うかもしれませんが、やりたいことはこんなイメージです。
そのままではCodeDeployからEC2が操作できないのでAgentを追加する必要がある。
Amazon Linux 用または RHEL 用の CodeDeploy エージェントをインストールする - AWS CodeDeploy
$ sudo yum update
$ sudo yum install ruby
$ sudo yum install wget
$ cd /home/ec2-user
// アジアパシフィック (東京)の場合
// wget https://aws-codedeploy-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/latest/install
$ wget https://{bucket-name}.s3.{region-identifier}.amazonaws.com/latest/install
$ chmod +x ./install
$ sudo ./install auto
サービスが正しく実行されているかは以下のコマンドで確認。
$ sudo service codedeploy-agent status
実行されていない場合、デプロイ時に以下のようなエラーが発生する。
The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.
CodeDeployにはappspec.yml
が必要で、同期させるファイルのルートに配置する必要がある。
version: 0.0
os: linux
files:
- source: /index.html
destination: /var/www/html/
hooks:
BeforeInstall:
- location: scripts/install_dependencies
timeout: 300
runas: root
- location: scripts/start_server
timeout: 300
runas: root
ApplicationStop:
- location: scripts/stop_server
timeout: 300
runas: root
apacheをインストールする。
#!/bin/bash
yum install -y httpd
apacheを起動する。
#!/bin/bash
service httpd start
apacheを停止する。
#!/bin/bash
isExistApp=`pgrep httpd`
if [[ -n $isExistApp ]]; then
service httpd stop
fi
デプロイは
-アプリケーションの停止
-アプリケーションファイルのダウンロード
-アプリケーションファイルのインストール
-アプリケーションの起動
という順で実行され、 次のデプロイライフサイクル図において、オレンジ背景の箇所が実際にフック処理を割り込めるイベントです。
※ ApplicationStopは2回目のデプロイ移行実行される
CodeDeploy > アプリケーション > 「アプリケーションの作成」ボタンを押す。
アプリケーション名を入力して、コンピューティングプラットフォームに「EC2/オンプレミス」を選択。
デプロイグループを作成する。
CodeDeploy > アプリケーション > codedeploy-test > codedeploy-group-test > 「デプロイ作成」を押す。
必要項目を入力する。
デプロイする。
CodePipeline > パイプライン > 「パイプラインを作成する」ボタンを押す。
「パイプライン名」を入力。
ソースプロバイダーに「Github」。 リポジトリ、ブランチに対象のものを設定。
Dockerイメージを作成する必要がある場合や、javaなどのコンパイル言語の場合に利用します。
phpやrubyのソースを配置するだけであれば、ビルドが必要ないのでスキップします、
デプロイプロバイダーはCodeDeployを選択。
その他の項目もCodeDeployで作成したものを設定する。
codepipelineが作成されて、デプロイが実行されます。
CodePipelineを利用する場合はEC2にS3にアクセスする権限を与える必要があります。
権限がない場合は以下のようなエラーが発生します。
S3への権限を追加する。
なにかお手伝いできることがあればご連絡ください。
※Googleフォームが表示されます