Bicep 構成ファイルにモジュール設定を追加する

bicepconfig.json ファイルでは、モジュールのパスに別名を作成することや、モジュールの公開と復元用にプロファイルと資格情報の優先順位を構成することができます。

この記事では、Bicep モジュールの操作に使用できる設定について説明します。

モジュールの別名

モジュールにリンクするためのパスを簡略化するため、構成ファイル内に別名を作成します。 別名によって、モジュール レジストリ、またはテンプレート スペックを含むリソース グループのいずれかを参照します。

構成ファイルには、moduleAliases のプロパティがあります。 このプロパティには、定義するすべての別名が格納されます。 このプロパティでは、別名は、それがレジストリとテンプレート スペックのどちらを参照しているかに基づいて分割されます。

Bicep レジストリの別名を作成するには、br プロパティを追加します。 テンプレート スペックの別名を追加するには、ts プロパティを使用します。

{
  "moduleAliases": {
    "br": {
      <add-registry-aliases>
    },
    "ts": {
      <add-template-specs-aliases>
    }
  }
}

br プロパティ内に、必要な数の別名を追加します。 別名ごとに名前と次のプロパティを指定します。

  • registry (必須): レジストリ ログイン サーバー名
  • modulePath (省略可能): モジュールが格納されているレジストリ リポジトリ

ts プロパティ内に、必要な数の別名を追加します。 別名ごとに名前と次のプロパティを指定します。

  • subscription (必須): テンプレート スペックをホストするサブスクリプション ID
  • resourceGroup (必須): テンプレート スペックを含むリソース グループの名前

次の例は、モジュール レジストリの 2 つの別名と、テンプレート スペックを含むリソース グループの 1 つの別名を定義する構成ファイルを示しています。

{
  "moduleAliases": {
    "br": {
      "ContosoRegistry": {
        "registry": "contosoregistry.azurecr.io"
      },
      "CoreModules": {
        "registry": "contosoregistry.azurecr.io",
        "modulePath": "bicep/modules/core"
      }
    },
    "ts": {
      "CoreSpecs": {
        "subscription": "00000000-0000-0000-0000-000000000000",
        "resourceGroup": "CoreSpecsRG"
      }
    }
  }
}

モジュール参照で別名を使用する場合は、次の形式を使用する必要があります。

br/<alias>:<file>:<tag>
ts/<alias>:<file>:<tag>

ファイル自体ではなく、モジュールを含むフォルダーまたはリソース グループに別名を定義します。 ファイル名は、モジュールへの参照に含める必要があります。

別名がない場合、レジストリ内のモジュールにリンクするには完全なパスを使用します。

module stgModule 'br:contosoregistry.azurecr.io/bicep/modules/core/storage:v1' = {

別名を使用すると、レジストリの別名を使用することでリンクを簡略化できます。

module stgModule 'br/ContosoRegistry:bicep/modules/core/storage:v1' = {

または、レジストリとモジュールのパスを指定する別名を使用してリンクを簡略化できます。

module stgModule  'br/CoreModules:storage:v1' = {

テンプレート スペックの場合は、以下を使用します。

module stgModule  'ts/CoreSpecs:storage:v1' = {

パブリック モジュール レジストリのエイリアスが事前に定義されています。 パブリック モジュールを参照するには、次の形式を使用できます。

br/public:<file>:<tag>

パブリック モジュール レジストリのエイリアス定義は、bicepconfig.json ファイルでオーバーライドできます。

{
  "moduleAliases": {
    "br": {
      "public": {
        "registry": "<your_module_registry>",
        "modulePath": "<optional_module_path>"
      }
    }
  }
}

プロファイルと資格情報を構成する

モジュールをプライベート モジュール レジストリに公開する、または外部モジュールをローカル キャッシュに復元するには、レジストリにアクセスするための適切なアクセス許可がアカウントに必要です。 レジストリに対する認証を行うため、Bicep 構成ファイルcurrentProfilecredentialPrecedence を手動で構成できます。

{
  "cloud": {
    "currentProfile": "AzureCloud",
    "profiles": {
      "AzureCloud": {
        "resourceManagerEndpoint": "https://management.azure.com",
        "activeDirectoryAuthority": "https://login.microsoftonline.com"
      },
      "AzureChinaCloud": {
        "resourceManagerEndpoint": "https://management.chinacloudapi.cn",
        "activeDirectoryAuthority": "https://login.chinacloudapi.cn"
      },
      "AzureUSGovernment": {
        "resourceManagerEndpoint": "https://management.usgovcloudapi.net",
        "activeDirectoryAuthority": "https://login.microsoftonline.us"
      }
    },
    "credentialPrecedence": [
      "AzureCLI",
      "AzurePowerShell"
    ]
  }
}

使用可能なプロファイルは次のとおりです。

  • AzureCloud
  • AzureChinaCloud
  • AzureUSGovernment

既定で、Bicep は、AzureCloud プロファイルと、Azure CLI または Azure PowerShell で認証されたユーザーの資格情報を使います。 これらのプロファイルをカスタマイズしたり、オンプレミスの環境用に新しいものを含めたりできます。 AzureUSGovernment などの国内クラウド環境にモジュールを発行または復元する場合は、Azure CLI でそのクラウド プロファイルを選択した場合でも、"currentProfile": "AzureUSGovernment" を設定する必要があります。 Bicep は、Azure CLI の設定に基づいて現在のクラウド プロファイルを自動的に決定することはできません。

Bicep では、Azure.Identity SDK を使用して認証を行います。 使用できる資格情報の種類は次のとおりです。

注意

vscode 内の Bicep デプロイ コマンドは、認証に Azure アカウント拡張機能を使用します。 bicepconfig.json のクラウド プロファイルは使用されません。

次のステップ