使用來自私人登錄的模組

已完成

您已了解如何將模組發佈至私人登錄。 在本單元中,您將了解如何將登錄中的模組當做 Bicep 範本的一部分。

使用 Bicep 模組

當您找到想要使用的模組時,您在 Bicep 範本中建立模組定義。 以下是範例:

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

請注意,模組定義類似本機模組的模組定義,但有一個重要差異。 您不需要在檔案系統上指定 Bicep 檔案的路徑,而是在登錄中包含模組的路徑。

新增模組的參考之後,Visual Studio Code 會嘗試從登錄自動下載該模組。 下載模組後,適用於 Visual Studio Code 的 Bicep 延伸模組會在您工作時提供 IntelliSense 和其他的程式碼撰寫協助。

別名

您可以使用「登錄別名」簡化模組定義。 您不需要在每次定義模組時指定登錄名稱,您使用其別名。 別名可透過幾種方式協助您:

  • 別名可以使您的 Bicep 檔案更加整齊,協助您避免一再重複輸入登錄的完整名稱。
  • 如果您將來變更為新的登錄,您可以更新別名,而不是更新登錄的每個參考。
  • 有些組織需要針對不同的情況使用不同的登錄,例如開發和生產環境。 您可以透過修改設定檔的方式,切換別名所參考的登錄。 然後,變更會套用至資料夾中的所有 Bicep 檔案。

若要定義別名,您必須在與 Bicep 檔案相同的資料夾中,建立 bicepconfig.json 檔案。 您在 bicepconfig.json 檔案內部定義的別名如下列範例所示:

{
  "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 自動下載模組。