Azure Resource Manager と Azure ARM テンプレートについて説明する

完了

Azure Resource Manager (ARM) は、Azure のデプロイおよび管理サービスです。 お使いの Azure アカウント内のリソースを作成、更新、および削除できる管理レイヤーを提供します。 Azure リソースで何かを行う場合は必ず、ARM が関与します。

ユーザーが Azure ツール、API、SDK のいずれかから要求を送信すると、ARM は要求を受信します。 ARM でその要求の認証と承認が行われます。 次に、ARM は、要求されたアクションを行う Azure サービスに要求を送信します。 すべての要求は同じ API を介して処理されるため、すべての異なるツールで一貫した結果と機能が得られます。

Azure Resource Manager の利点

Azure Resource Manager を使用すると、次のことができます。

  • スクリプトではなく宣言型のテンプレートを使用してインフラストラクチャを管理します。 Resource Manager テンプレートは、Azure にデプロイするものを定義する JSON ファイルです。
  • ソリューションのリソースを個別に処理するのではなく、すべてのリソースをグループとしてデプロイ、管理、監視します。
  • ソリューションを開発のライフサイクル全体で再デプロイし、リソースは、必ず一貫した状態でデプロイされます。
  • 正しい順序でデプロイされるように、リソース間の依存関係を定義します。
  • RBAC が管理プラットフォームにネイティブ統合されるため、すべてのサービスにアクセス制御を適用できます。
  • タグをリソースに適用し、サブスクリプションのすべてのリソースを論理的に整理します。
  • 同じタグを共有するリソース グループのコストを表示することで、組織の課金を明確にします。

次の動画では、Azure Resource Manager の概要について説明します。

コードとしてのインフラストラクチャ

コードとしてのインフラストラクチャは、コード行としてインフラストラクチャを管理する概念です。 入門レベルでは、Azure Cloud Shell、Azure PowerShell、または Azure CLI を使用してリソースを管理および構成することなどです。 クラウドに慣れてくると、コードとしてのインフラストラクチャの概念を使用して、反復可能なテンプレートや構成を使用してデプロイ全体を管理できるようになります。 ARM テンプレートと Bicep は、Azure Resource Manager でコードとしてのインフラストラクチャを使用して環境を維持する 2 つの例です。

ARM テンプレート

ARM テンプレートを使用すると、使用するリソースを宣言型の JSON 形式で記述できます。 ARM テンプレートを使用すると、コードを実行する前にデプロイ コードが検証されます。 これにより、リソースが確実に作成され、正しく接続されます。 その場合、テンプレートでは、それらのリソースの作成が並列的に調整されます。 つまり、同じリソースのインスタンスが 50 個必要な場合、50 個すべてのインスタンスが同時に作成されます。

要するに、開発者、DevOps プロフェッショナル、または IT プロフェッショナルは各リソースの目的の状態と構成を ARM テンプレートで定義することだけが必要であり、残りの部分はテンプレートによって実行されます。 リソースのセットアップの前または後に、テンプレートで PowerShell や Bash のスクリプトを実行することもできます。

ARM テンプレートを使用する利点

ARM テンプレートによって、Azure リソースのデプロイを計画する際に多くの利点が得られます。 それらの利点の一部を次に示します。

  • 宣言型の構文:ARM テンプレートを使用すると、Azure インフラストラクチャ全体を宣言方式で作成し、デプロイできます。 宣言構文とは、デプロイする内容を宣言することを意味しますが、リソースをデプロイするために実際のプログラミング コマンドとシーケンスを記述する必要はありません。
  • 反復可能結果:インフラストラクチャを開発のライフサイクル全体で繰り返しデプロイし、常に一貫性のある方法でリソースをデプロイします。 同じ ARM テンプレートを使用して、すべての環境が同じであることを認識して、複数の Dev/Test 環境をデプロイできます。
  • オーケストレーション:複雑な順序付けのことを心配する必要はありません。 Azure Resource Manager では、相互に依存するリソースのデプロイが調整され、正しい順序で作成されます。 可能な場合は、Azure Resource Manager でリソースが並行してデプロイされるため、直列デプロイに比べ、短時間でデプロイが完了します。 テンプレートは複数の命令コマンドではなく、1 つのコマンドを使用してデプロイします。
  • モジュール式のファイル:テンプレートは再利用可能な構成部品に細分化し、デプロイ時にリンクさせることができます。 あるテンプレートを別のテンプレート内の入れ子にすることもできます。 たとえば、VM スタック用のテンプレートを作成し、環境全体をデプロイするテンプレートの内部にそのテンプレートを入れ子にし、VM スタックが各環境テンプレートに一貫してデプロイされるようにできます。
  • 拡張性: デプロイ スクリプトでは、PowerShell または Bash スクリプトをテンプレートに追加できます。 デプロイ スクリプトを使用すると、デプロイ時にリソースを設定する機能が拡張されます。 スクリプトは、テンプレートに含めることも、外部ソースに格納してテンプレート内で参照することもできます。 デプロイ スクリプトを使用すると、1 つの ARM テンプレートでエンドツーエンド環境をセットアップできます。

Bicep

Bicep は、宣言型の構文を使用して Azure リソースをデプロイする言語です。 Bicep ファイルは、インフラストラクチャと構成を定義します。 その後、ARM が Bicep ファイルに基づいてその環境をデプロイします。 JSON で記述される ARM テンプレートと似ていますが、Bicep ファイルでは、よりシンプルで簡潔なスタイルが使用される傾向があります。

Bicep の利点は次のとおりです。

  • すべてのリソースの種類と API バージョンのサポート: Bicep では、Azure サービスのすべてのプレビュー版と GA バージョンがすぐにサポートされます。 リソース プロバイダーが新しいリソースの種類と API バージョンを導入するとすぐに、Bicep ファイルでそれらを使用できます。 新しいサービスは、ツールが更新されるまで待たなくても使用することができます。
  • 単純な構文: 同等の JSON テンプレートと比較すると、Bicep ファイルはより簡潔で読みやすくなっています。 Bicep は、プログラミング言語に関する知識を必要としません。 Bicep 構文は宣言型であり、デプロイするリソースとリソース プロパティを指定します。
  • 反復可能結果:インフラストラクチャを開発のライフサイクル全体で繰り返しデプロイし、常に一貫性のある方法でリソースをデプロイします。 Bicep ファイルはべき等です。つまり、同じファイルを何度でもデプロイし、同じリソースの種類を同じ状態で作成できます。 更新を提示する個別のファイルを多数開発するのではなく、望ましい状態を提示するファイルを 1 つ開発することができます。
  • オーケストレーション:複雑な順序付けのことを心配する必要はありません。 Resource Manager では、相互に依存するリソースのデプロイが調整され、正しい順序で作成されます。 Resource Manager では、可能な箇所でリソースが並列デプロイされます。そのため、直列デプロイに比べ、短時間でデプロイが完了します。 複数の命令コマンドではなく、1 つのコマンドを使用してファイルをデプロイします。
  • モジュール性: モジュールを使用して、Bicep コードを管理しやすいパーツに分割できます。 モジュールによって、関連するリソースのセットがデプロイされます。 モジュールを使用すると、コードを再利用し、開発を簡素化することができます。 これらのリソースをデプロイする必要がある場合はいつでも、モジュールを Bicep ファイルに追加します。