Bicep モジュール用のプライベート レジストリを作成する

組織内でモジュールを共有するには、プライベート モジュール レジストリを作成します。 そのレジストリにモジュールを公開し、モジュールをデプロイする必要があるユーザーに読み取りアクセス権を与えます。 レジストリでモジュールを共有した後は、Bicep ファイルからそれらを参照できます。 パブリック モジュール レジストリに貢献するには、貢献ガイドを参照してください。

モジュール レジストリを使用するには、Bicep CLI バージョン 0.4.1008 以降が必要です。 Azure CLI で使用するには、バージョン 2.31.0 以降も必要です。Azure PowerShell で使用するには、バージョン 7.0.0 以降も必要です。

トレーニング リソース

段階的なガイダンスを通じてパラメーターを学習したい場合は、「プライベート レジストリを使用して Bicep モジュールを共有する」をご覧ください。

プライベート レジストリを構成する

Bicep レジストリは Azure Container Registry (ACR) でホストされます。 モジュール用にレジストリを構成するには、以下の手順を使用します。

  1. コンテナー レジストリが既に存在する場合は、それを使用できます。 コンテナー レジストリを作成する必要がある場合は、「クイック スタート: Bicep ファイルを使用したコンテナー レジストリの作成」を参照してください。

    モジュール レジストリには、使用可能な任意のレジストリ SKU を使用できます。 レジストリ geo レプリケーションを使用すると、ユーザーにローカル プレゼンスまたはホット バックアップが提供されます。

  2. ログイン サーバー名を取得します。 この名前は、Bicep ファイルからレジストリにリンクするときに必要です。 ログイン サーバー名の形式は <registry-name>.azurecr.io です。

    ログイン サーバー名を取得するには、Get-AzContainerRegistry を使用します。

    Get-AzContainerRegistry -ResourceGroupName "<resource-group-name>" -Name "<registry-name>"  | Select-Object LoginServer
    
  3. レジストリにモジュールを公開するには、イメージをプッシュするアクセス許可が必要です。 レジストリからモジュールをデプロイするには、イメージをプルするアクセス許可が必要です。 適切なアクセス権を付与するロールの詳細については、「Azure Container Registry のロールとアクセス許可」を参照してください。

  4. モジュールのデプロイに使用するアカウントの種類によっては、どの資格情報を使用するかのカスタマイズが必要な場合があります。 これらの資格情報は、レジストリからモジュールを取得するために必要です。 既定では、資格情報は Azure CLI または Azure PowerShell から取得されまし。 bicepconfig.json ファイルで資格情報を取得するための優先順位をカスタマイズできます。 詳細については、「モジュールを復元するための資格情報」を参照してください。

重要

プライベート コンテナー レジストリは、必要なアクセス権を持つユーザーだけが使用できます。 ただし、パブリック インターネットを使ってアクセスします。 セキュリティを強化するために、プライベート エンドポイント経由のアクセスを要求することができます。 「Azure Private Link を使用して Azure Container Registry にプライベートで接続する」を参照してください。

プライベート コンテナー レジストリでは、ポリシー azureADAuthenticationAsArmPolicyenabled に設定されている必要があります。 azureADAuthenticationAsArmPolicydisabled に設定されている場合は、モジュールの発行時に 401 (未承認) エラー メッセージが表示されます。 「Azure Container Registry への条件付きアクセス ポリシーの導入」を参照してください。

レジストリにファイルを公開する

コンテナー レジストリを設定した後、そこにファイルを公開できます。 publish コマンドを使用し、モジュールとして使用する Bicep ファイルを指定します。 レジストリ内のモジュールのターゲットの場所を指定します。 publish コマンドを実行すると、レジストリに格納される ARM テンプレートが作成されます。 つまり、他のローカル モジュールを参照する Bicep ファイルを発行すると、これらのモジュールは 1 つの JSON ファイルとして完全に展開され、レジストリに発行されます。

Publish-AzBicepModule -FilePath ./storage.bicep -Target br:exampleregistry.azurecr.io/bicep/modules/storage:v1 -DocumentationUri https://www.contoso.com/exampleregistry.html

Bicep CLI バージョン 0.27.1 以降では、コンパイルされた JSON テンプレートに加えて、Bicep ソース コードを含むモジュールを公開できます。 Bicep ソース コードとともにモジュールをレジストリに公開した場合は、Visual Studio Code から F12 (定義に移動) を押すと、Bicep コードが表示されます。 Bicep ファイルを表示するには、Bicep 拡張機能のバージョン 0.27 以降が必要です。

Publish-AzBicepModule -FilePath ./storage.bicep -Target br:exampleregistry.azurecr.io/bicep/modules/storage:v1 -DocumentationUri https://www.contoso.com/exampleregistry.html -WithSource

with source スイッチを使用すると、マニフェストに追加のレイヤーが示されます。

ソースを含む Bicep モジュール レジストリのスナップショット。

Bicep モジュールがプライベート レジストリ内のモジュールを参照している場合、ACR エンドポイントが表示されることに注意してください。 完全なエンドポイントを非表示にするには、プライベート レジストリの別名を構成します。

レジストリ内のファイルを表示する

公開済みのモジュールをポータルで表示するには、次のようにします。

  1. Azure portal にサインインします。

  2. コンテナー レジストリを検索します。

  3. お使いのレジストリを選択します。

  4. 左側のメニューから [サービス] ->[リポジトリ] を選択します。

  5. モジュール パス (リポジトリ) を選択します。 前の例では、モジュール パス名は bicep/modules/storage です。

  6. タグを選択します。 前の例では、タグは v1 です。

  7. [成果物参照] が、Bicep ファイルで使用する参照と一致します。

    Bicep モジュール レジストリの成果物参照

これで、レジストリ内のファイルを Bicep ファイルから参照する準備ができました。 外部モジュールを参照するために使用する構文の例については、「Bicep モジュール」を参照してください。


Bicep レジストリ ファイルの操作

リモート レジストリでホストされている bicep ファイルを利用する場合、ローカル コンピューターがレジストリとやりとりする方法を理解することが重要です。 レジストリへの参照を最初に宣言すると、ローカル エディターは Azure Container Registry と通信し、レジストリのコピーをローカル キャッシュにダウンロードしようとします。

ローカル キャッシュは次の場所にあります:

  • Windows の場合

    %USERPROFILE%\.bicep\br\<registry-name>.azurecr.io\<module-path\<tag>
    
  • Linux の場合

    /home/<username>/.bicep
    
  • Mac の場合

    ~/.bicep
    

リモート レジストリに加えられた変更は、レジストリ参照を含む指定のファイルで restore が実行されるまで、ローカル コンピューターでは認識されません。

az bicep restore --file <bicep-file> [--force]

詳細については、restore コマンドを参照してください。

次のステップ