AWS
えー、前回下記のような投稿をしましたが、
CodePipeline Githubにコミットしたら自動的にデプロイするまでの道のり①
CodePipeline Githubにコミットしてテスト環境で確認の後デプロイする
今回はみんなやりたい!環境やサーバー、テスト、リリースなどによって「何か」を変えたいというのをやります。
たとえば、テスト環境ではこのファイル表示したい、とか、エラーログレベルを調整したいとか、そういうのですね。
これを自動でやるのが、デプロイツールのだいご味ではないでしょうか!!
さて、わかってしまえば単純な仕組みですが、AWSのドキュメントの場所がわからず悩みました。
ずばり、下記を見ればそれができます。
AppSpec ‘hooks’ Section
CodeDeployで作った、デプロイグループの名前を変数として使えます。
まずは、超単純ですが、テスト環境の場合、index2.htmlというファイルを作って、aaabbbという文字列を表示します。
- テスト環境へのデプロイを、”DeployTest”という名前のデプロイグループに保存します。
- change_as_serverというファイル名で下記を書いて保存します。
#!/bin/bash
if [ "$DEPLOYMENT_GROUP_NAME" == "DeployTest" ]
then
echo aaabbb > /var/www/html/index2.html
fi
CodeDeployで利用する、appspec.ymlで、
hooks:
BeforeInstall:
に、上記で作ったスクリプトを走らせるように書きます。
アプリケーションのインストール前に何をするかってことですね。
appspec.ymlの全体が下記です。
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html/
hooks:
BeforeInstall:
- location: scripts/start_server
timeout: 300
runas: root
- location: scripts/change_as_server
timeout: 300
runas: root
ApplicationStop:
- location: scripts/stop_server
timeout: 300
runas: root
- 前回CodePipeline Githubにコミットしてテスト環境で確認の後デプロイするにて作ったパイプラインの様子が下記です。
今回もこのフローにのってやります。
- StagingでのCodeDeployにはDeployTestのデプロイを、ReleaseでのCodeDeployにはDeployReleaseのデプロイを利用します。
- appspec.ymlとscripts/change_as_serverをGithubにコミットすると、ちょうどCodePipelineが走り始めます。
- テスト環境だけ、index2.htmlができていると思います!⊂(^-^)⊃
- 今回、bashでやりましたけども、Pythonとかも使えるようなので、柔軟にいろんなことができると思います。