CodePipeline のチュートリアル
使うことになったので早速チュートリアルをやる
公式手順
チュートリアルの流れ
- CodeCommitのリポジトリのmasterブランチへのプッシュを行うと
- CodePipelineによってCodeDeployが実行されて
- EC2にデプロイを実行する
- デプロイ完了したら、Congratulationsのページが表示される
手順
1. IAM作成
- name : CICDtest
- role :
- AWSCodePipeline_FullAccess
- AWSCodeCommit_PoweUser
2. リポジトリ作成 & クローン
リポジトリ作成
- name : myrepo
IAM設定
- パブリックキー登録
CICDtestユーザの認証情報
に
ローカルサーバのSSH公開鍵を登録
- アクセスキー発行
アクセスキーの作成
でキー作成
$ aws configure
コマンドでキー情報を指定
- configファイル作成
ここが特殊で、.ssh/
ディレクトリにconfig
というファイルを作成して.
パーミッションを600にする必要があった
config
Host git-codecommit.*.amazonaws.com
User アクセスキーID
IdentityFile ~/.ssh/id_rsa(公開鍵と対になる秘密鍵)
[user@host .ssh]$ ls -lA
合計 20
-rw-------. 1 user user 1550 12月 6 10:14 authorized_keys
-rw-------. 1 user user 89 2月 8 16:08 config
-r--------. 1 user user 2602 12月 5 00:38 id_rsa
-rw-r--r--. 1 user user 570 12月 5 00:38 id_rsa.pub
-rw-r--r--. 1 user user 2886 2月 8 16:09 known_hosts
clone実行
$ git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/myrepo
3. サンプルファイルDL & push
- DL
$ cd myrepo
$ wget https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/samples/SampleApp_Linux.zip
$ unzip SampleApp_Linux.zip
$ mv SampleApp_linux.zip ../
- push
$ git add -A
$ git commit -m "Add sample application files"
$ git push
4. EC2作成、CodeDeployエージェントインストール
ロール作成
作成するEC2インスタンスにインスタンスロールをアタッチして、
CodeDeployを実行できるようにしたいので、
まずインスタンスロールを作成する
- name : EC2InstanceRole
- policy : AmazonEC2RoleforCodeDeploy (CodeDeployで検索)
EC2インスタンス作成
- name : EC2Instance
- AMI : AmazonLinux
- 自動割り当てパブリックIP : 有効
- IAM : EC2InstanceRoleさっき作ったやつ
- 高度
- ユーザーデータ : ↓
#!/bin/bash
yum -y update
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./install
./install auto
- セキュリティグループ : HTTP(80)だけ開いてたらOK
- タグ
- name : EC2Instance
5. CodeDeploy設定
CodeDeploy用のロール作成
- name : CodeDeployRole
- policy : ユースケースでCodeDeployを選ぶと自動で選択されている
CodeDeploy Application の作成
- name : demo-application
- プラットフォーム : ec2/オンプレミス
CodeDeploy DeployGroup の作成
- name : demo-deploy-group
- role : さっき作ったやつ
- type : インプレース
- environment : EC2インスタンス
- キー:
- name:EC2Instance(EC2インスタンスの名前)
- キー:
- deploy : CodeDeployDefault.OneAtATime
- LB : 無効化
6. Pipeline作成
- name : MyPipeline
- ロール : 新しい
- name : MyPipelineRole
- ソース : CodeCommit
- reponame : myrepo
- branch : master
- ビルド : スキップ
- デプロイ :
- ソース : CodeDeploy
- ロケーション : 東京
- アプリケーション名 : demo-application (さっき作ったやつ)
- デプロイグループ : demo-deploy-group (さっき作ったやつ)
- ソース : CodeDeploy
実行するとデプロイ開始される
うまくいってたら成功表示が出る
7. 確認
作成したEC2のパブリックIPにHTTPアクセスすると、
アプリがデプロイされてCongraturationsのページが表示される
感想
一番難しかったのがCodeCommitのSSHを使ったリポジトリのクローンでした、、、
むしろそれくらいPipelineの構築が単純明快でよかった