と HashiCorp Packer を使用してパイプライン CodePipeline と AMI を作成する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

と HashiCorp Packer を使用してパイプライン CodePipeline と AMI を作成する

作成者:Akash Kumar (AWS)

環境:PoC またはパイロット

ソース: DevOps

tターゲット:Amazon マシンイメージ (AMI)

R タイプ:リホスト

ワークロード:その他すべてのワークロード

テクノロジー: DevOps、モダナイゼーション、ウェブおよびモバイルアプリ

[概要]

このパターンでは、AWS を使用して Amazon Web Services (AWS) クラウドにパイプラインを作成するコードサンプルとステップ CodePipeline 、および HashiCorp Packer を使用して Amazon マシンイメージ (AMI) の両方を作成します。このパターンでは、Git ベースのバージョン管理システムでコードの構築とテストを自動化する「継続的インテグレーション」 手法に基づいています。このパターンでは、AWS を使用してコードリポジトリを作成し、クローンを作成します CodeCommit。次に、AWS を使用してプロジェクトを作成し、ソースコードを設定します CodeBuild。最後に、リポジトリにコミットされる AMI を作成します。

前提条件と制限

前提条件

  • アクティブなAWS アカウント

  • Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動するための Amazon Linux AMI

  • HashiCorp Packer 0.12.3 以降

  • Amazon CloudWatch Events (オプション)

  • Amazon CloudWatch Logs (オプション)

アーキテクチャ

次の図表には、このパターンのアーキテクチャを使用して AMI の作成を自動化するアプリケーションコードの例を示しています。

AMI の作成を自動化します。

この図表は、次のワークフローを示しています:

  1. デベロッパーは、プライベート CodeCommit Git リポジトリにコード変更をコミットします。次に、 CodePipeline を使用してビルド CodeBuild を開始し、Amazon Simple Storage Service (Amazon S3) バケットにデプロイできる新しいアーティファクトを追加します。

  2. CodeBuild は Packer を使用して、JSON テンプレートに基づいて AMI をバンドルおよびパッケージ化します。有効にすると、ソースコードに変更が発生すると、 CloudWatch イベントは自動的にパイプラインを開始できます。

テクノロジースタック

  • CodeBuild

  • CodeCommit

  • CodePipeline

  • CloudWatch Events (オプション)

ツール

  • AWS CodeBuild – AWS CodeBuild は、cloud. CodeBuild compiles your source code でフルマネージド型のビルドサービスです。ユニットテストを実行し、すぐにデプロイできるアーティファクトを生成します。

  • AWS CodeCommit – AWS CodeCommit は、AWS クラウドで Git リポジトリをプライベートに保存および管理できるバージョン管理サービスです。 は、独自のソース管理システムを管理する必要や、インフラストラクチャのスケーリングについて心配する必要 CodeCommit を排除します。

  • AWS CodePipeline – AWS CodePipeline は、ソフトウェアのリリースに必要なステップをモデル化、視覚化、自動化するために使用できる継続的な配信サービスです。

  • HashiCorp Packer – HashiCorp Packer は、単一のソース設定から同一のマシンイメージの作成を自動化するためのオープンソースツールです。パッカーは軽量で、すべての主要オペレーティングシステムで動作し、複数のプラットフォーム用のマシンイメージを並行で作成します。

コード

このパターンには、以下の添付ファイルが含まれます。

  • buildspec.yml – このファイルは、 CodeBuild を使用してデプロイ用のアーティファクトを構築および作成します。

  • amazon-linux_packer-template.json – このファイルは、パッカーを使用して Amazon Linux AMI を作成します。

エピック

タスク説明必要なスキル

リポジトリを作成します。

CodeCommit リポジトリ を作成します

AWS システム管理者

リポジトリをクローン作成します。

CodeCommit リポジトリ のクローンを作成してリポジトリに接続します

アプリ開発者

ソースコードをリモートリポジトリにプッシュします。

  1. コミットを作成して、buildspec.ymlamazon-linux_packer-template.json ファイルをローカルリポジトリに追加します。

  2. ローカルリポジトリからリモート CodeCommit リポジトリにコミットをプッシュします

アプリ開発者
タスク説明必要なスキル

ビルドプロジェクトを作成します。

  1. AWS マネジメントコンソールにサインインし、AWS CodeBuild コンソール を開き、ビルドプロジェクトの作成 を選択します。

  2. プロジェクト名 にプロジェクトの名前を入力します。

  3. ソースプロバイダー でAWS CodeCommitを選択します。

  4. リポジトリで、コードパイプラインを構築するレポジトリを選択します。

  5. [環境イメージ] で、[マネージド型イメージ] または [カスタムイメージ] を選択します。

  6. [Operating system] で、[Ubuntu] を選択します。

  7. RunTime(s) の場合は、Standard を選択します。

  8. [イメージ] で、[aws/codebuild/standard:4.0] を選択します。

  9. [イメージのバージョン] で、[このランタイムバージョンには常に最新のイメージを使用] を選択します。

  10. [環境タイプ] は、[Linux] を選択します。

  11. 特権チェックボックスを選択します。

  12. サービスロールには、新規サービスロール、または既存のサービスロールを選択します。

  13. [ビルド仕様] で、ビルド仕様ファイルの使用またはビルドコマンドの挿入を選択します。

  14. (オプション)アーティファクトセクションのタイプでは、アーティファクトなしを選択します。

  15. (推奨) ビルド出力ログを CloudWatch ログにアップロードするには、 CloudWatch ログを選択します。

  16. (オプション) ビルド出力ログを Amazon S3 にアップロードするには、S3 logsチェックボックスを選択します。

  17. Create build project (ビルドプロジェクトの作成)を選択します。

アプリ開発者、AWS システム管理者
タスク説明必要なスキル

パイプライン名

  1. AWS マネジメントコンソールにサインインし、AWS CodePipeline コンソール を開き、パイプラインの作成 を選択します。

  2. パイプライン名 に、パイプラインの名前を入力します。

  3. サービスロール で、新規サービスロール、または既存のサービスロールを選択します。

  4. ロール名 に、ロールの名前を入力します。

  5. Amazon S3 がバケットを作成し、そのバケットにアーティファクトを保存するようにする場合、詳細設定セクションでアーティファクトストアデフォルトの位置 を選択します。 カスタムの場所で、既存の S3 バケットを使用を選択します。[次へ] をクリックします。

  6. ソースプロバイダー でAWS CodeCommitを選択します。

  7. リポジトリ名では、以前にクローンされたリポジトリを選択します。ブランチ名では、ソースコードブランチを選択します。

  8. 変更検出オプション でAmazon CloudWatch Events (推奨) を選択してパイプラインを起動するか、AWS CodePipelineを選択して定期的に変更を確認します。[次へ] をクリックします。

  9. ビルドプロバイダー でAWS CodeBuildを選択します。

  10. プロジェクト名 で、アプリケーションエピックのプロジェクトの作成で作成したビルド CodeBuild プロジェクトを選択します。

  11. を選択し、次にビルドオプションを選択します。

  12. デプロイステージをスキップを選択します。

  13. パイプラインの作成 を選択します。

アプリ開発者、AWS システム管理者

関連リソース

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip