想ひ出27: AWS/CodePipelineに入門する/2
おはようございます、moqrinです。
前回の続きです。
当記事はCodeDeployを設定してCodePipelineを実行して確認まで、となります。
全部で4ステップで、当記事は3ステップから行います。
目次
3. AWS CodeDeploy でアプリケーションを作成する
6. 宿題
1. インスタンスに必要なIAMロールを設定
- S3からCodeDeployエージェントをインストールするために新しい IAM ロールを作成
# ポリシー { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
元々のAWSCodeCommitFullAccessと上記を併せて、"CodePipelineForEC2Role"(名前は何でもいいけど)を作成。 こちらをインスタンスに付与します。
- CodeDeployエージェントをインストール
叩くもよし。起動時に実行させるもよし。
#!/bin/bash yum -y update yum install -y ruby yum install -y aws-cli cd /home/ec2-user aws s3 cp s3://aws-codedeploy-ap-northeast-1/latest/install . --region ap-northeast-1 chmod +x ./install ./install auto
# エージェントを確認 service codedeploy-agent status
インスタンスは準備OK.
appspec.ymlを作成します。
2. appspec.yamlを作成する
appspec.yamlでやりたいこと
う〜ん、、、死ぬほど雑。
ローカルのリポジトリでディレクトリを1つ作って、シェルスクリプトを放り込みます。 ちなみに、雑すぎてログで怒られます、、、
mkdir deploy_hooks # vim deploy_hooks/install_dependencies.sh #!/bin/sh cd /var/www/html/YourSampleRepo virtualenv --python python3 env source ../env/bin/activate pip install flask uwsgi flask-sqlalchemy mysqlclient flask-login flask-migrate mkdir instance echo "SECRET_KEY = 'secret' SQLALCHEMY_DATABASE_URI = 'mysql://USER_NAME:USER_PASS@ENDPOINT_URL' SQLALCHEMY_TRACK_MODIFICATIONS = True" >>instance/config.py echo "from run import app if __name__ == \"__main__\": app.run()" >wsgi.py echo "[uwsgi] module = wsgi:app master = true processes = 5 socket = flaskr.sock chmod-socket = 660 vacuum = true die-on-term = true" >flaskr.ini flask db init flask db migrate flask db upgrade systemctl start flaskr && systemctl start nginx
# vim deploy_hooks/stop_delete.sh #!/bin/sh systemctl stop flaskr && systemctl stop nginx rm -rf /var/www/html/YourSampleRepo mysql -h ENDPOINT_URL -u USER_NAME -pUSER_PASS DB_NAME -N -e 'show tables' | while read table; do mysql -h ENDPOINT_URL -u USER_NAME -pUSER_PASS -e "drop table $table" DB_NAME; done
そしたら、appspec.ymlをディレクトリ直下に格納しておきます。
# appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/html/YourSampleRepo hooks: BeforeInstall: - location: deploy_hooks/stop_delete.sh AfterInstall: - location: deploy_hooks/install_dependencies.sh
3. AWS CodeDeploy でアプリケーションを作成する
① アプリケーションを作成
② デプロイグループの作成
ま、適当に。
4. CodePipelineを作成する
ソースはCodeCommit
今回ビルドはしないので、スキップ
そしてデプロイ
5. CodeCommit リポジトリにPushしてみる
早速Pushして確認。
ついでに、タイトルとか変えてみる。
CodePipeline上でも確認
表示
OK.
何かエラーが有った場合はこの辺を見よう。
tail -f /var/log/aws/codedeploy-agent/xxxx.log tail -f /opt/codedeploy-agent/deployment-root/deployment-logs/xxxx.log
6. 宿題
かなり雑なやり方だったので、もうちょっと整備した方が宜しいですね。。。
参考:
チュートリアル: シンプルなパイプラインを作成する (AWS CodeCommit リポジトリの場合)