LoginSignup
0
1

More than 1 year has passed since last update.

【AWS】Code3兄弟を使用してci/cdパイプラインを構築した

Last updated at Posted at 2023-02-04

01.はじめに

CodeDeployが提供しているサンプルアプリケーションを使用してci/cdパイプラインを構築してみた。
前提として筆者の作業環境はWindowsを使用しておりGitクライアントはあらかじめ使用できる状態である。

02.構成図

下記の通りとする。
今回はci/cdの動作確認が主であるためセキュリティの考慮はしない。
image.png

03.テスト方法

Code Commitにサンプルアプリケーションをpushする。
EC2のグローバルIPアドレスにhttpアクセスしてテストページが閲覧できることを確認する。
確認後、テストページをローカル環境で編集して再度pushする。
EC2に再アクセスした際に編集内容が反映されているか確認する。

04.IAMロール作成

1.マネジメントコンソールのIAM画面に遷移してEC2用のロールを作成する。
 下記2つのポリシーを持ったロールを作成する。
・AmazonS3FullAccess
・AWSCodeDeployRole
image.png

2.公式ドキュメントに沿って
 信頼関係を下記のように変更する
image.png

05.EC2作成

詳細は割愛するが、下記のような方針でEC2を構築する
・パブリックサブネットに構築する
・セキュリティグループはSSH接続、http接続ができる設定になっていればOK
・前項番で作成したIAMロールをアタッチする
・タグ付けを下記の通りとする
 Key:deploy Value:01
・EC2起動後CloudShellでSSHログインして下記コマンドを実行

sudo su -
yum update
yum install ruby
yum install wget
cd /home/ec2-user
wget https://aws-codedeploy-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/latest/install
chmod +x ./install
./install auto
service codedeploy-agent start
service codedeploy-agent status

06.リポジトリ作成

1. マネジメントコンソールからCodeCommitに遷移してリポジトリの作成をクリックする。
image.png

2.リポジトリ名を任意の名前に設定して作成をクリックする。
image.png

3.接続方法はhttps,ssh,GRCの3種類あるが今回はhttpsを使用する。
 下記画面でURLを発行できるので控えておく
image.png

4.IAMの管理画面に遷移して既存のユーザのポリシーにIAMポリシーを追加する。
・AWSCodeCommitPowerUser
image.png

5.対象ユーザのセキュリティ認証情報タブをクリックする。

image.png
 下記画面に遷移する。認証情報を生成するとユーザ名とパスワードが表示されるので控えておく。
image.png

6.ローカル環境で任意の名前でフォルダを作成する。作成後Gitクライアントが扱えるツール
 (コマンドプロンプト、Power Shell、Git Bashのどれか)で該当フォルダにcdしておく。

7.3で控えていたURLを参照して下記コマンドを実行する。

git clone https://xxxx

 認証画面に遷移するので5で控えていたユーザ名・パスワードを入力する。

8.codedepoloy提供のサンプルアプリケーションをインストールする
 解凍すると下記ファイルが存在する。
image.png
 scripts配下の中身。
image.png

 6で作成したフォルダにファイルを一式移動しておく。

9.index.htmlの現在設定の確認
image.png

07.ローカルリポジトリをプッシュ

1.マネジメントコンソールでCodeCommit/リポジトリに遷移して現在設定を確認する。
image.png

2.ローカルで下記Gitコマンドを実行する。

git init
git add .
git commit -m "first commit"
git push https://xxxx master

3.リモートリポジトリにpushされたことを確認する。masterブランチが作成されていることを確認する。
image.png

08.Codedeployの作成

1.マネジメントコンソールでCodeDeploy/アプリケーション作成に遷移してアプリケーション作成する。
image.png

2.1を作成後デプロイグループの作成する。
image.png

09.Codepipelineの設定&テストアクセス

マネジメントコンソールでCodePipeline/パイプラインを作成するに遷移する。
1.任意のパイプライン名を入力する。
image.png

2.ソースステージを追加する。
 ソースプロバイダ:AWS CodeCommit
 リポジトリ名:CodeCommitで作成したリポジトリ
 ブランチ名:master
image.png

3.今回の設定ではスキップ。
image.png

4.デプロイステージを追加する
 赤枠の箇所はCode Deployで設定したものが候補として出てくるのでそれを設定する。
image.png

 次にを選択すると自動的にCodepipelineが走る。
image.png

5.テストアクセス

①EC2のグローバルIPアドレスを確認
 $ ec2-metadata | grep ipv4
local-ipv4: 10.0.4.213
public-ipv4: 52.199.201.209 ←こっちが対象
 $
②httpdのステータス確認
$ systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-02-02 13:24:05 UTC; 3min 2s ago
     Docs: man:httpd.service(8)
 Main PID: 8795 (httpd)
   Status: "Total requests: 2; Idle/Busy workers 100/0;Requests/sec: 0.0112; Bytes served/sec:  12 B/sec"
   CGroup: /system.slice/httpd.service
           ├─8795 /usr/sbin/httpd -DFOREGROUND
           ├─8799 /usr/sbin/httpd -DFOREGROUND
           ├─8800 /usr/sbin/httpd -DFOREGROUND
           ├─8801 /usr/sbin/httpd -DFOREGROUND
           ├─8802 /usr/sbin/httpd -DFOREGROUND
           ├─8803 /usr/sbin/httpd -DFOREGROUND
           └─8943 /usr/sbin/httpd -DFOREGROUND

Feb 02 13:24:05 ip-10-0-4-213.ap-northeast-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
Feb 02 13:24:05 ip-10-0-4-213.ap-northeast-1.compute.internal systemd[1]: Started The Apache HTTP Server.
$ 
③index.htmlファイルの確認
$ ll /var/www/html/index.html 
-rw-r--r-- 1 root root 717 Dec 31  1979 /var/www/html/index.html
$ 

 ブラウザでアクセス出来ることを確認する。
image.png

10.index.htmlをローカルで編集して再度push、ブラウザで再アクセスする

1.ブランチを作成する。下記Gitコマンドを実行する。

git switch -c test
git branch
git init

2.ローカルのindex.htmlの9行目を変更する。(水色→黒色にする)
image.png

3.リモートリポジトリにpushする。下記Gitコマンドを実行する。

git add .
git commit -m "modify black"
git status
git push https://xxxx test

4.マネジメントコンソールでCodecommitに遷移するとプルリクエストが出来ている。
 testブランチからmasterブランチにマージしようとしていることを確認する。
 変更箇所が差分として表示されるので差分が想定通りのことを確認してプルリクエストの作成をクリックする

image.png

5.プルリクエストが作成される。マージをクリックする。
image.png

6.マージする。
image.png

 自動でパイプラインが走る
image.png

 少し待つと設定が反映される
image.png

7.設定が反映されているか確認する
image.png
※ブラウザのキャッシュが残っていて再読み込みだと設定が反映されないケースもあるので、
 その場合はキャッシュをクリアするか違うブラウザでアクセスする。

11.所感

直感的に操作が出来るので思ったより設定自体はシンプルにできた。
IAMの権限設定がシンプルにEC2を立てるケースよりも複雑な印象。
git操作で躓いてしまったのでコマンドをしっかり理解する。
次回はblue green デプロイやマルチAZ対応のパターンも試してみたい。

参考文献

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1