從部署工作流程發佈 Bicep 程式碼

已完成

當您讓範本規格或 Bicep 模組的發佈程序自動化時,您必須確定通常您自己所做的一切都可以在工作流程內自動化並執行。 在此單元中,您將了解從部署工作流程發佈範本規格和 Bicep 模組時,如何套用您先前學到的一些原則。

範本規格和模組

Bicep 可讓您輕鬆地重複使用程式碼。 在部署之間重複使用 Bicep 程式碼的兩個常見方法如下:

  • 範本規格,已針對完整解決方案的部署最佳化。 例如,假設您已定義一組安全性強化的資源,以根據您的公司規格部署完整的虛擬機器。 您可以將此程式碼發佈為範本規格。然後,您的同事可以使用範本規格來部署完整的虛擬機器,即使是從 Azure 入口網站亦然。
  • 模組,設計為其他部署的元件。 例如,假設您已建立會建立儲存體帳戶的 Bicep 檔案。 您可能需要在許多其他部署中使用儲存體帳戶,因此您可以將 Bicep 檔案發佈至登錄,並以模組型式在整個組織的部署中使用。

當您在範本規格與 Bicep 模組之間進行抉擇時,理想的經驗法則是:如果要在整個組織中依原樣部署範本,那麼範本規格可能是個很好的選擇。 但是,如果您可能會在多個父範本內重複使用此範本,則 Bicep 模組可能更能滿足您的需求。

驗證工作流程中可重複使用的程式碼

與一般 Bicep 部署不同,當您建立範本規格或模組時,您不會直接將資源部署到 Azure。 您會發佈範本規格或模組。 然後,您可以在其他部署中使用範本規格或模組。 該部署會部署您已定義的資源。 由於這種差異,驗證和測試範本規格和 Bicep 模組的方式可能會與您用於一般 Bicep 部署的程序不同。

建議您對 Bicep 程式碼進行 Lint 分析。 Linter 會偵測語法問題,並且在您未遵循建議的做法時發出警告。

除了 Lint 分析之外,您可能想要考慮使用預檢驗證來測試範本規格和模組。 您甚至可以考慮將範本規格和模組部署到 Azure,並測試它們所建立的資源是否如預期般運作。 不過,基於兩個原因,從部署工作流程執行這些類型的測試可能並不容易:

  • 預檢驗證和部署需要用來部署資源的 Azure 環境。 您可能需要維護專用的 Azure 訂用帳戶或資源群組,以用於部署和測試您的模組。
  • 許多範本規格和模組都需要您指定一組參數。 您可能需要為範本規格或模組建立一組測試參數,以便在部署時使用。

您必須選擇是否要包含部署和測試範本規格和模組的工作流程步驟。 在此 Microsoft Learn 訓練課程模組中,我們會對 Bicep 程式碼進行 Lint 分析,但不包含其他形式的測試。 如果您想要測試範本規格和模組,請考慮如何將它們部署至 Azure。 另請考慮您是否要使用專用的訂用帳戶或資源群組來部署資源。

提示

如需有關如何在自動化工作流程中測試 Bicep 檔案的詳細資訊,建議您檢閱使用 GitHub Actions 測試 Bicep 程式碼

驗證和授權

當您自行將範本規格發佈至 Azure 時,Microsoft Entra 使用者必須獲得授權而可存取包含範本規格資源的資源群組。 同樣地,當您將 Bicep 模組發佈至登錄時,您的 Microsoft Entra 使用者必須對您的組織用於其 Bicep 模組的 Azure Container Registry 執行個體擁有寫入權限。

當您使用自動化部署工作流程時,也適用相同的原則。 不過,由於您不是執行部署的人員,您必須確定工作流程的身分識別對於發佈範本規格所需的資源群組,或是發佈模組的所需容器登錄,具有適當存取權。

提示

當您將模組發佈至登錄時,執行部署的工作負載身分識別可能不需要大量權限。 當您的登錄使用 Microsoft Entra 授權時,工作負載身分識別只需要登錄上的 AcrPush 權限。

請考慮使用最低權限的安全性原則。 只提供容器登錄的存取權給工作流程的身分識別,而不允許存取資源群組或訂用帳戶。

從工作流程發佈範本規格和模組

當您使用 Azure CLI 從自己的電腦發佈範本規格時,所使用的命令大致如下:

az ts create \
  --name StorageWithoutSAS \
  --location westus3 \
  --display-name "Storage account with SAS disabled" \
  --description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
  --version 1 \
  --template-file main.bicep

您可以將此 Azure CLI 命令轉換成 GitHub Actions 步驟:

- name: Publish template spec
  uses: azure/cli@v1
  with:
    inlineScript: |
      az ts create \
        --name StorageWithoutSAS \
        --location westus3 \
        --display-name "Storage account with SAS disabled" \
        --description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
        --version 1 \
        --template-file main.bicep

工作流程會使用相同的程序來發佈您自己要使用的範本規格。

同樣地,當您使用 Azure CLI 從自己的電腦發佈 Bicep 模組時,所使用的命令大致如下:

az bicep publish \
   --file module.bicep \
   --target 'br:toycompany.azurecr.io/mymodules/myqueue:2'

您也可以將此 Azure CLI 命令轉換成 GitHub Actions 步驟:

- name: Publish Bicep module
  uses: azure/cli@v1
  with:
    inlineScript: |
      az bicep publish \
        --file module.bicep \
        --target 'br:toycompany.azurecr.io/mymodules/myqueue:2'

提示

在此範例中,Bicep 登錄的主機名稱 (toycompany.azurecr.io) 會內嵌在工作流程步驟定義中。 這是建議的做法。 您可以像這樣使用環境變數來設定組態設定。 您稍後會在此 Microsoft Learn 訓練課程模組中看到其運作方式。

不久之後,您將了解如何使用此單元中所述的步驟,從工作流程發佈範本規格。

使用模組或範本規格

在先前的 Microsoft Learn 訓練課程模組中,您已了解如何部署範本規格中定義的資源,以及如何使用儲存在登錄中的 Bicep 模組。 無論您是以手動方式還是從部署工作流程發佈範本規格和模組,其使用和部署方式都相同。

例如,您可以使用 az deployment group create Azure CLI 命令,或使用 New-AzResourceGroupDeployment Cmdlet 搭配 Azure PowerShell,將範本規格或 Bicep 檔案部署至資源群組。