モジュール レジストリについて理解する

完了

このユニットでは、Bicep レジストリの概要、Bicep コードの共有に役立つ理由について説明します。 また、自分の組織のレジストリを作成する方法についても説明します。

Bicep モジュールを共有する理由

Bicep を使用する場合、よく似たリソースを繰り返し使用することがよくあります。 また、複数の場所に配置するリソースの組み合わせを作成することもよくあります。 Bicep モジュールは、再利用可能な Bicep ファイルを作成するための便利な方法を提供します。 各モジュールは、通常、構成が事前定義された 1 組のリソースを定義します。

モジュールを使用する利点の 1 つは、自分のモジュールを他のユーザーと共有できることと、他のユーザーのモジュールを共有するメリットが得られることです。 たとえば、一緒に使用することが多い 1 組のリソースをデプロイするために、Bicep ファイルのビルドとテストに時間を費やすことができます。 ファイルを Bicep モジュールとして共有すると、同僚はそのモジュールを使用して同じリソースをすばやくデプロイできます。

Bicep レジストリは、モジュールが格納され共有される場所です。 だれでも独自のレジストリを作成できます。 今後、Microsoft では、モジュールに加えて、レジストリへのより多くの種類の Bicep コンテンツの発行をサポートする予定です。

ヒント

Microsoft では、パブリック Bicep モジュール レジストリが管理されています。 このパブリック レジストリには、コミュニティ内の誰でも使用できるモジュールが含まれています。 時間の経過と同時に、このパブリック レジストリには、Bicep で一般的なシナリオを実現するために役立つモジュールが追加されます。

この Learn モジュールでは、プライベート レジストリを使って独自のモジュールを共有することに焦点を当てています。 まとめユニットには、パブリック レジストリに関する情報がもっとわかるリンクがあります。

レジストリとテンプレート スペックの比較

Azure Resource Manager テンプレート (ARM テンプレート) をテンプレート スペックとして保存できます。テンプレート スペックは、テンプレートを再利用可能にし、組織全体で共有する方法です。

Bicep レジストリとテンプレート スペックに格納されているモジュールはどちらも、デプロイ コードを再利用可能にする手段です。 ただし、それぞれ異なる目的に最適化されています。

  • Bicep モジュールは、より大きなデプロイに結合されることを意図しています。 テンプレート スペックは、完全なテンプレートとしてデプロイ可能に設計されています。 Azure portal のほか Azure CLI や Azure PowerShell などのツールを併用して、テンプレート スペックをデプロイすることができます。 ただし、テンプレート スペックを作成しておけば、必要に応じて Bicep でモジュールとして使用することもできます。
  • テンプレート スペックは Azure 内にリソースとして保存されます。 レジストリ内のモジュールはコンテナー成果物として格納されます。
  • テンプレート スペックには、アクセス制御機能があります。 プライベート レジストリを使用する場合は、他の方法でのモジュールへのアクセスを制御する必要があります。 アクセスの制御については後のユニットで学習します。

テンプレート スペックと Bicep モジュールのどちらを使用するかは、次の基準で判断するとよいでしょう。テンプレートをそのまま組織全体でデプロイする場合には、テンプレート スペックが適していると考えられます。 一方、そのテンプレートを複数の親テンプレート内で再利用したい場合は、Bicep モジュールの方が都合がよいと考えられます。 レジストリは、モジュールを共有するための適切な方法です。

プライベート レジストリ

Bicep レジストリは、"コンテナー レジストリ" と呼ばれるテクノロジに基づいて構築されています。

組織で Kubernetes または別のコンテナー化テクノロジを使用している場合は、既にレジストリを十分にご存じかもしれません。 ただし、コンテナーや Kubernetes を使用して Bicep を操作する必要はありません。 レジストリからは、成果物を格納して共有するための汎用的で便利な方法が提供されます。 ストレージ アカウントに似ていると考えてみてください。

現在、Bicep は Azure Container Registry をサポートしています。 今後、Microsoft は、Docker Hub などの他のレジストリをサポートする予定です。

Azure Container Registry には複数のサービス レベルが用意されており、それぞれ機能と制限が異なります。 独自のレジストリをプロビジョニングする場合は、要件に適したレベルを選択する必要があります。 まとめユニットには詳細情報のリンクがあります。

後ほど、モジュールをレジストリに発行する方法について説明します。

ヒント

Azure Container Registry では、モジュールは "リポジトリ" と呼ばれます。 これを Git リポジトリと混同しないでください。 言葉は同じですが、意味は異なります。

アクセス制御

Azure Container Registry によって組織のプライベート レジストリが提供されるため、アクセス権を持つユーザーを制御できます。 Azure Container Registry には、Microsoft Entra ID や個々のユーザーに発行するキーなど、アクセスを管理するためのオプションがいくつか用意されています。

Bicep を使用する場合、最も簡単な方法は Microsoft Entra 認証を使用することです。 Bicep は、Azure CLI または Azure PowerShell で使用している Microsoft Entra の ID を自動的に検出するため、再びサインインする必要はありません。 認証のしくみについては、次の演習で説明します。 パイプラインから Bicep モジュール レジストリを使用する場合、"サービス プリンシパル" と呼ばれる特殊な種類の ID を使用します。

レジストリにモジュールを書き込む権限を持つユーザーと、モジュールを読み取る権限を持つユーザーを別々に制御できます。