working aws codedeploy devops tool
AWS CodeDeployを使用した自動デプロイに関するチュートリアル:
に AWSDevOpsツールのパート2 、Mavenを使用してJ2EEプロジェクトをビルドするためにCodeBuildサービスがどのように使用されるかを見ました。
このチュートリアルでは、S3バケットに保存されているアーティファクトWARファイルを使用して、CodeDeployサービスを使用してTomcatアプリケーションサーバーにデプロイする方法を説明します。
チェックアウト=> DevOpsトレーニングの理想的なガイド
AWS CodeDeployは、Amazon EC2LinuxまたはWindowsインスタンスへのアプリケーションのデプロイを自動化するデプロイサービスです。
このチュートリアルでは、JenkinsをCodeDeployと統合する方法についても説明します。
前提条件:
- AWSのアカウント、できれば無料利用枠。
- 良好で高速なインターネット接続。
- 使用したAWSリージョン–アジアパシフィック(シンガポール)。
- AmazonLinuxまたはRHELEC2インスタンス。
- EC2インスタンスにインストールされたTomcat。
注意: コンテンツをデプロイするために、AWSCodeCommitリポジトリはCodeDeployサービスではサポートされていません。 S3とGitHubのみがサポートされています。
学習内容:
- CodeDeployのセットアップ
- Amazon LinuxEC2インスタンスを起動します
- AWSCodeDeployとS3の統合
- CodeDeployアプリケーションを作成する
- JenkinsとAWSCodeDeployの統合
- 結論
- 推奨読書
CodeDeployのセットアップ
AWS CodeDeployは、EC2インスタンスとアーティファクト(WARファイル)がデプロイ用に保存されているS3バケットにアクセスするために2つのエンティティと連携する必要があります。 CodeDeployサービスがこれらのIAMにアクセスするためのアクセス許可を提供するには、ロールを設定する必要があります。 IAMロールはIAMユーザーに対して定義されていませんが、エンティティにのみアクセスできます。
#1) を作成します 最初の役割 CodeDeployサービスがEC2インスタンスにアクセスするため。
IAMを起動し、をクリックします 役割->役割の作成。
下 AWSサービス クリック EC2->ユースケースを選択-> EC2 をクリックします 次へ->権限。
を選択 AWSCodeDeployRole ポリシー名の下でクリックします 次へ->レビュー。
役割名を入力して、をクリックします 役割を作成します。
最後に、このロールの信頼関係を編集して、CodeDeployサービスが全体的または特定のリージョン/エンドポイントにアクセスできるようにします。
ロールをクリックして、以下に示すように信頼関係を更新します。
ポリシーで、EC2をCodedeployに変更し、をクリックします 信頼ポリシーを更新します。
2) を作成します 2番目の役割 CodeDeployサービスを使用してS3バケットにアクセスするEC2インスタンスの場合。
この役割について上記の手順を繰り返し、以下のように入力します。
- に移動 IAM->ロール->ロールの作成。
- AWS Serviceで、EC2を選択します。
- その下でユースケースをもう一度選択し、EC2をクリックしてボタンをクリックします 次へ->権限。
- 添付許可ポリシー画面で、 AmazonS3ReadOnlyAccess ボタンをクリックします 次へ->レビュー。
- 役割に名前を付ける HW-Codedeploy-EC2-S3 をクリックします 役割を作成します。
これで、両方の役割が使用可能になります。
Amazon LinuxEC2インスタンスを起動します
このセクションでは、EC2インスタンスをプロビジョニングします。
インスタンスのプロビジョニング中に、必ず役割を選択してください HW-Codedeploy-EC2-S3 中 インスタンスの詳細を構成する ステップ。また、必ずポート8080を開いてください。
これに加えて、インストールする必要があります CodeDeployエージェントとTomcat アプリケーションのデプロイに使用されるアプリケーションサーバーとして。
#1)AmazonLinuxインスタンスにCodeDeployAgentをインストールして設定する
CodeDeployエージェントは展開に役立ち、展開が行われるすべてのインスタンス(環境)にインストールする必要があります。
Linuxインスタンスにログインし、使用している地域ごとにエージェントをダウンロードします。私たちの場合、識別子が ap-southeast-1。
エージェントをダウンロードするコマンドは、次の形式になります。
wget https:// aws-codedeploy-。 s3.amazonaws.com/latest/install
#2)EC2インスタンスにTomcatをインストールする
- Tomcatをインストールして実行するには、次の手順を順番に実行します。
yum install tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- アプリケーションマネージャのTomcatユーザーを有効にします。 /etc/tomcat7/tomcat-users.xmlファイルに示されているように変更を行います
- 最後に、Tomcatサービスを開始します。
サービスtomcat7開始
- 打ち上げ TomcatWebアプリケーションマネージャー URL http://:8080 / managerを使用して機能しているかどうかを確認します
Chromeでswfを実行する方法
AWSCodeDeployとS3の統合
パート2で述べたように、CodeDeployは、アプリケーションの最新バージョンをデプロイするために使用されるコードリポジトリとしてS3とGitHubのみをサポートします。アプリケーションのWARファイルはS3バケットに保存されているため、維持される形式がZIPファイルであることを確認する必要があります。
これは、WARファイルがCodeDeployを使用したデプロイプロセスでサポートされているZIPファイルに含まれている必要があることを意味します。
- AWS CLI(コマンドラインインターフェース)もLinuxインスタンスにインストールする必要があります。を参照してください URL インストールします。
- Linuxインスタンスで次の手順を実行して、S3バケットからWARをダウンロードします。通常、次の手順はビルドマシンで実行する必要があります。
AWS_ACCESS_KEY_ID =を設定します
AWS_SECRET_ACCESS_KEY =を設定します
AWS_DEFAULT_REGION = ap-southeast-1を設定します
cd / opt / niranjan
aws s3 cp s3://hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeployは appspec.yml EC2インスタンスへのデプロイ手順を含むファイル。このファイルは、アプリケーションのWARファイルがダウンロードされるフォルダーのルートにある必要があります。
以下に示すように、appspec.ymlファイルとscriptsフォルダーを作成します。
展開中、イベントは次の順序で実行されます。
#1)ApplicationStop
#2)インストール前
#3)インストール(ファイルセクションが呼び出され、WARファイルがコピーされます)
#4)ApplicationStart
- 使用されるフォルダ階層は
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
スクリプト
start_application
stop_application
アンインストール_war_file
- スクリプトの内容
stop_application:
curl –user tomcat:tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/stop?path=/AWS-HelloWorld-1.0.0
start_application:
curl –user tomcat:tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/start?path=/AWS-HelloWorld-1.0.0
アンインストール_war_file
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0.war
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0
- コンテンツをZIPして、ZIPファイルをS3バケットにアップロードします。バケットでVERSIONINGが有効になっていることを確認します。
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.warappspec.ymlスクリプト
aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
s3://hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
S3バケットにアップロードされたZIPファイルは次の画面のようになります。
コマンドを1つずつ実行する代わりに、実行可能スクリプトを作成して上記のコマンドを追加し、ビルドから新しいアプリケーションWARファイルが利用可能になるたびに実行することができます。
CodeDeployアプリケーションを作成する
CodeDeployアプリケーションは、WARファイルの適切なリビジョンがEC2インスタンスである適切な環境にデプロイされるようにするために作成されます。
CodeDeployサービスを起動し、 アプリケーションの作成 ボタン。
アプリケーション名、展開グループを入力します( 例: QA-Env)を選択し、実行中のEC2インスタンスを選択します。
フォームの最後で、サービスロールを選択します。これは、チュートリアルの前半で作成されたもう1つの役割です。
クリックしてください アプリケーションの作成 ボタン。
展開グループ(QA-Env)を選択し、 アクション->新しいリビジョンをデプロイします。
ZIPファイルはS3バケットにあるため、次のようにリビジョンの場所を入力します。
s3://hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
クリックしてください デプロイ ボタン。以下に示すように、展開は成功します。
WARファイルはtomcatwebappsディレクトリに正常にコピーされます。
アプリケーションのURLを参照して、アプリケーションが正常にデプロイされていることを確認します。
JenkinsとAWSCodeDeployの統合
前の2つのチュートリアルで見たように、JenkinsはAWSDevOpsツールと非常によく統合されています。 JenkinsをCodeDeployと統合するには、プラグインをインストールする必要があります。クリック ここに CodeDeployプラグインをダウンロードしてインストールします。
まず、IAMユーザーのアクセスキーと秘密キーをに入力します Jenkins->構成 。
結論
これまで、CodeDeployを使用して、Tomcatアプリケーションサーバーを実行しているEC2インスタンスへのS3バケットに保存されたJ2EEアプリケーションWARファイルのデプロイを自動化する方法を見てきました。
これらの3つのツールのシリーズ、つまりCodeCommit、CodeBuild、およびCodeDeployは、DevOpsの継続的インテグレーションと継続的デリバリーの側面に役立ちます。これらの3つのツールに加えて、AWS CodePipelineは、アプリケーション配信のエンドツーエンドの視覚化に役立つもう1つのツールです。
Elastic Beanstalkを使用したAWSへの.NETWebアプリケーションのデプロイについて詳しくは、今後のチュートリアルにご注目ください。