Amazon Web Services ブログ

AWS Systems Manager を使用した AWS CloudFormation テンプレートとスタックの管理

AWS CloudFormation は、インフラストラクチャをコードとして管理し、自動化するために有効なサービスです。これまでお客様は、Amazon Simple Storage Service(Amazon S3)またはバージョン管理システムを使用して、CloudFormation テンプレートをコードアーティファクトとして保存、共有、および管理していました。さらに、ガバナンスをきかせながら CloudFormation テンプレートに基づいたデプロイを行いたいお客様は、AWS Service Catalog を使用しています。2021年7月、AWS Systems Manager の機能である Application Managerテンプレートライブラリのリリースを発表しました。テンプレートライブラリを使用すると、コンソールを介して CloudFormation テンプレートの作成、保存、バージョン管理、検証、共有、およびプロビジョニングが簡単に出来ます。この機能を使用して、Systems Manager コンソールでアプリケーションまたはアプリケーションコンポーネントのテンプレートを管理可能です。追加のセットアップやオンボーディングの要件なしで、すべてのAWSのお客様が利用できます。

Application Manager におけるアプリケーションとは、単一のユニットとして表示及び管理する AWS リソースの論理グループを表します。通常、これらのリソースグループは、それぞれアプリケーションまたはアプリケーションのコンポーネントを表します。このブログ記事では、CloudFormation を使用した Application Manager アプリケーションの機能例を紹介します。このアプリケーションは、一般的な Jenkins ビルドサーバーをデプロイします。多くの開発チームは、Jenkins を主要なビルドおよびデプロイメント手段として選択しています。また、多くの場合、1 つの会社内において、複数のチームが独自の Jenkins デプロイメントを持っています。企業は、ベストプラクティスに従って Jenkins を設定する単一の CloudFormation テンプレートを作成することで、プロセスを合理化および統合できます。このテンプレートはテンプレートライブラリに簡単に保存でき、組織全体の Jenkins デプロイメントのプロビジョニングと更新に使用できます。

テンプレートライブラリ入門

この記事では、コンソールを使用した CloudFormation テンプレートの作成と管理にフォーカスします。まず、テンプレートライブラリを使用して、Jenkins のデプロイに必要なリソースを作成する CloudFormation テンプレートを作成します。コンソール、AWS CLI、または SDK を使用して、テンプレートを管理できます。

図1. テンプレートライブラリ

[テンプレートライブラリ] ページには、[Amazonが所有]、[自己所有]、[Shared with me]、[すべてのテンプレート] タブが表示されます。[Amazonが所有] を選択すると、AWS クイックスタート および AWS ソリューションとして AWS によって発行されたテンプレートが表示されます。

図2. [Amazonが所有]タブ

最初のテンプレートの作成

[自己所有] タブを選択し、[テンプレートを作成] をクリックします。

図3. テンプレートの作成

[テンプレートを作成] ページで、テンプレートの名前 (例: JenkinsTemplate) とオプションでバージョン名 (例: Testversion) を入力します。コードエディターで、[YAML] または [JSON] を選択し、テンプレートのコンテンツを入力します。

図4. テンプレート詳細

CloudFormation スタックのプロビジョニング

Jenkins デプロイ用の CloudFormation テンプレートを作成したら、[アクション] から [スタックをプロビジョニング] を選択して Jenkins をプロビジョニングします。

図5. スタックのプロビジョニング

[スタックの詳細を編集] で、[スタック名] セクションにて [新しいスタックを作成] を選択し、JenkinsStack-DevTeam-A と入力します。[パラメータ] で、図に示すようにフィールドに入力し、[次へ] を選択します。

図6. スタックの詳細の編集

[確認とプロビジョニング] で [スタックをプロビジョニング] を選択します。

図7. 確認とプロビジョニング

テンプレートの詳細ページで、[プロビジョニング] タブを選択します。[イベントのプロビジョニング] の下に、ステータスとその他の詳細が表示されます。

図8. JenkinsStack-DevTeam-A

Jenkins のデプロイが完了したら、Application Manager ダッシュボードを使用して、デプロイに関するオペレーションデータ  (デプロイステータス、Amazon CloudWatch アラーム、リソース設定、運用上の問題など)  を表示します。必要な場合は修復アクションも実行できます。

図9. Application Manager ダッシュボード

バージョン管理と追加デプロイ

この時点で、Jenkins テンプレートの 1 つのバージョン (デフォルトバージョン) と、そのテンプレートを使用する 1 つのデプロイ済みスタックがあります。同じテンプレートを複数の CloudFormation スタックにデプロイする場合は、この手順をもう一度実行して、同じテンプレートを選択します。Jenkins デプロイメントにさらにリソースを追加する必要がある場合は、テンプレートを拡張し、必要なリソースを含む新しいバージョンを作成します。

[テンプレートライブラリ] ページで、[自己所有] を選択し、次に JenkinsTemplate を選択します。[アクション]から、[編集]を選択します。

図10. [自己所有]タブ

必要なリソースをテンプレートに追加し、[ 保存] を選択します。[ デフォルトとして設定] チェックボックスをオフにします。後続スタック作成時のデフォルトにする前に、更新されたスタックをテストする必要があります。

図11. JenkinsTemplate の Version2

テンプレートのバージョンを並べて比較するには、[バージョンを比較] を選択します。

図12. バージョンの比較

この時点で、更新されたテンプレートを使用して別のスタックをプロビジョニングできます。更新されたテンプレートが期待どおりに動作していることを確認したら、現在のバージョンをデフォルトとして設定できます。テンプレートを表示すると、異なるバージョンのテンプレートを使用してデプロイされたスタックも表示できます。

図13. JenkinsTemplate

結論

テンプレートライブラリの機能により、Application Manager から CloudFormation スタックベースのアプリケーションを管理できるようになりました。これにより、アプリケーション管理プロセスが簡素化され、IT チームは注力すべき業務に集中しやすくなります。

著者について

Kapil Shardha

Kapil Shardha は AWS のプリンシパルソリューションアーキテクトで、エンタープライズのお客様をサポートしています。彼はインフラストラクチャの自動化と DevOps のバックグラウンドを持っています。

Jan Thomas

Jan Thomas は AWS のテクニカルプロダクトマネージャーで、ドイツのベルリンを拠点としています。AWS Systems Manager と AWS OpsWorks に携わり、AWS のお客様の管理と運用のエクスペリエンスを向上させています。

翻訳は SA 石橋が対応しました。原文はこちら