AWSのCI/CDサービスCodeDeploy、CodePipelineを試してみた
黒川さんの動画でCodeDeploy、CodePipelineを学んだので
活字でもハンズオン出来るように記事として書き起こしてみる。
参照:【はじめてのCI/CD】AWSでやってみるDevOps最初の一歩、CodeDeploy、CodePipelineを使った自動デプロイのハンズオン
https://www.youtube.com/watch?v=8mPm7jolnVk&t=6s
AWSのCodeシリーズの解説:
コードをサーバまで運んでくれるので便利
CodeDeploy、CodePipeline
github→codedeploy→internetgateway→ec2
このサービスを使うには3つの設定が必要。
・AWSのVPC内の設定
・githubクライアント側の設定
・code系の設定
AWSのVPC内の設定
・ルートテーブルにインターネットゲートウェイへのルートテーブルを設定していること
・セキュリティグループでsshインバウンド設定許可がされていること
・NetworkACLはインもアウトも全て許可されていること
VPC設定の解説わからない場合はこちらで学ぼう
https://www.youtube.com/watch?v=aQpMBqn5mRY
AWSのVPC内の設定1:
EC2インスタンス制作手順(作っている人は飛ばしても良い)
ステップ1
・osはamazonlinux2を選択
ステップ2
・インスタンスタイプはt2microを選択
ステップ3
・ネットワーク:あらかじめ作成したインターネットゲートウェイ設定してあるvpcを
・自動割り当てパブリックip:有効を選択
・codedeployのロールをアタッチするためIAM作成
→awscodedeployroleを割り当てる
ロール名:awscodedeployrole
でロール作成
・IAMロール:awscodedeployroleを選択
ステップ4:ストレージの追加
・8Gデフォルトを選択
ステップ5:タグの追加
・キー:「name」を入力
・値:「codedeploydemo」を入力
ステップ6セキュリティグループ設定
・デフォルトのまま
・キーペア→作成したもの使用で→インスタンス作成
AWSのVPC内の設定2:
codedeployのエージェントをインストール
作ったインスタンスに接続
管理者権限で
sudo su -
公式手順のコマンドをシェルで実行
CodeDeployエージェント実行コマンド
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/instances-ec2-create.html
Amazon Linux および RHEL の場合
シェル作る
vi codedeploy.sh
#!/bin/bash
yum -y update
yum install -y ruby
cd /home/ec2-user
curl -O https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install
chmod +x ./install
./install auto
//シェルの解説:
yum -y update #yumを最新のパッケージにアップデート
yum install -y ruby#rubyをインストール
カールコマンドでエージェントをダウンロード
aws提供のs3バケットからcodedeployのエージェントをインストールしてる。
リージョン別リソースキットバケット名
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/resource-kit.html#resource-kit-bucket-names
アジアパシフィック (東京) aws-codedeploy-ap-northeast-1 ap-northeast-1
シェルに実行権限付与
chmod +x codedeploy.sh
シェル実行
sh codedeploy.sh
ちなみに、ステップ3:インスタンスの詳細設定で
高度な設定から、シェルスクリプトを貼り付けて起動させることも出来る。
githubクライアントの設定:
以下のリポジトリを例として解説
https://github.com/KouheiKurokawa713/codedeploy
!codedeployを使用するにはデプロイさせたいファイルと「appspec.yml」が必要
リポジトリの中身として、indexファイルを書き換えることで
index.htmlの背景色が変わりcodedeployが出来たかを確認する実験。
appspec.ymlについての解説
・codedeployの仕様でappspec.ymlを同期させるディレクトリのルートに配置する必要がある。
・設定ファイル、同期させる先は何か?
version: 0.0
os: linux
files:
- source: /index.html #同期させる元は何か?
destination: /var/www/html/ #同期させる先は何か?
hooks: #codedeployが動作する合間に任意のシェルを実行する設定
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
Codedeployの設定:
Codedeployの設定手順(作っている人は飛ばしても良い)
・awsコンソールからcodedeployメニューを開く→アプリケーションの作成
アプリケーションの作成
-アプリケーション名:test-codedeploy
-コンピューティングプラットフォーム:ec2オンプレミスを選択
デプロイグループの作成
-デプロイグループ名の入力:test-deploygroup
-サービスロールの入力:用意されたものを使用→???
-デプロイタイプ:インプレースを選択
-EC2インスタンスのタググループ
-キー:deploy
-値:01
→デプロイグループを作成
??インプレースデプロイとは??
稼働中サーバに対して直接新しいアプリケーションを配置、再起動してしまう方法です。
??ブルーグリーンデプロイとは??
稼働中サーバ(ブルー)とは別のサーバ(グリーン)に対して新しいアプリを展開し動作確認を行います。
-EC2インスタンスのタググループ→タグに含まれるものならまとめてデプロイ可能?
・githubトークン名を入力しgithubに接続をクリック
githubとcodedeployが紐づいたらリポジトリ名とコミットIDの入力フォームが出る。
-リポジトリ名:アカウント名/リポジトリ名を入力
-コミットID:最新のコミットのハッシュ値を取得して貼り付ける。
任意:
80番ポートを開く→
パプリックIPを取得して、webブラウザにアクセス:
githubに置いてあったindex.htmlの青い背景ページがデプロイされてることが確認できる。
codedeployを使ってみよう
・vscodeにて変更したソースをgithubにpush
・最新コミットのhash値をgithubから取得し、codedeploy画面に貼り付け
・codedeployを実行
・デプロイ成功を確認後、webにアクセスしソースのデプロイ成功を確認する。
CodePipelineを設定しよう!
codedeployだけ設定してもソースをpushしてからいちいちhashを貼り付けて、
deployボタンを押す必要があるので面倒くさい。
codepipulineも設定すれば、
pushするだけで、awsに自動でデプロイ出来るようになるぞ!!
CodePipelineの設定手順:
・awsコンソールからCodePipelineへ移動、CodePipelineの作成をクリック
・パイプラインの設定
-パイプライン名:test-pipelineと入力
-次へ
・ソースステージを追加
-ソースプロパイダ:githubを選択
-githubに接続するをクリック
-リポジトリとブランチを入力
-次へ
・ビルドステージを追加する
-ビルドステージをスキップを選択
(コンパイル言語はビルドを挟む(java/c#)インタプリタ言語はビルドはさまない(php/ruby))
このままだとCodePipelin権限が足りずに失敗してしまう。
なのでCodePipelinはs3を介してやりとりするのでs3のロールポリシーをアタッチする。
再度、デプロイを行うと成功する。
Author And Source
この問題について(AWSのCI/CDサービスCodeDeploy、CodePipelineを試してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/gamelike319/items/8c2a538868cc1359662c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .