プライベート レジストリからモジュールを使用する

完了

モジュールをプライベート レジストリに発行する方法について学習しました。 このユニットでは、Bicep テンプレートの一部として既にレジストリにあるモジュールの使用方法について説明します。

Bicep モジュールを使用する

使用するモジュールが見つかったら、Bicep テンプレートで "モジュール定義" を作成します。 次に例を示します。

module myModule 'br:myregistry.azurecr.io/modulepath/modulename:moduleversion' = {
  name: 'my-module'
  params: {
    moduleParameter1: 'value'
  }
}

モジュール定義はローカル モジュールの定義と似ていますが、1 つ重要な違いがあることに注目してください。 ファイル システムで Bicep ファイルへのパスを指定するのではなく、レジストリにモジュールへのパスを含めます。

モジュールへの参照を追加したら、Visual Studio Code はレジストリからモジュールを自動的にダウンロードしようとします。 モジュールがダウンロードすると、Visual Studio Code の Bicep 拡張機能によって、作業中に IntelliSense やその他のコード作成支援が提供されます。

エイリアス

"レジストリの別名" を使用すると、モジュール定義を簡略化できます。 モジュールを定義するたびにレジストリ名を指定するのではなく、別名を使用します。 別名は、次のように複数の方法で役立ちます。

  • Bicep ファイルを整理できて、レジストリのフル ネームを繰り返し入力しなくても済みます。
  • 将来、新しいレジストリに変更する場合は、参照ごとに更新するのではなく、別名を更新できます。
  • 一部の組織では、開発環境や実稼働環境など、状況に応じて異なるレジストリを使用する必要があります。 構成ファイルを変更することで、エイリアスによって参照されるレジストリを切り替えることができます。 変更はその後、フォルダー内のすべての Bicep ファイルに適用されます。

別名を定義するには、Bicep ファイルと同じフォルダーに bicepconfig ファイルを作成する必要があります。 bicepconfig ファイル内で、次の例のように別名を定義します。

{
  "moduleAliases": {
    "br": {
      "MyRegistry": {
        "registry": "myregistry.azurecr.io"
      }
    }
  }
}

Bicep ファイルでモジュールを定義する場合は、次のように、別名を含む、若干異なる種類のモジュール パスを使用します。

module myModule 'br/MyRegistry:bicep/my-module:v1' = {
  // ...
}

ヒント

別名を使用する場合、パスの先頭が br/ であり、使用しない場合は br: であることに注目してください。

エイリアスには、レジストリ内のモジュールまでのパスを含めることができます。モジュールに共通のプレフィックスを使用する場合に便利です。

{
  "moduleAliases": {
    "br": {
      "MyRegistryWithPath": {
        "registry": "myregistry.azurecr.io",
        "modulePath": "bicep"
      }
    }
  }
}

次に、Bicep ファイルでモジュールを定義するときに、パスを省略できます。

module myModule 'br/MyRegistryWithPath:my-module:v1' = {
  // ...
}

Bicep ファイルをビルドする

Bicep ファイルをデプロイする準備ができたら、通常と同じようにデプロイします。 Bicep は、デプロイ プロセスの一部として、モジュールをレジストリから自動的にダウンロードします。 Bicep は、ユーザーが参照しているすべてのモジュールを、トランスパイルされた ARM テンプレート JSON ファイルに埋め込みます。

bicep restore コマンドを使用し、モジュール ダウンロード プロセスをビルドから分離することもできます。 その後、bicep build コマンドと --no-restore コマンドライン スイッチを使用し、ビルド プロセスのモジュール ダウンロードを停止できます。 ただし、通常、モジュールを分割する必要はなく、Bicep にモジュールを自動ダウンロードさせます。