Azure 部署堆疊與 Azure 開發人員 CLI 的整合

Azure 開發者 CLI(azd)支援 Azure部署堆疊以進行範本部署。 Azure 部署堆疊是一種資源,讓你能將一組 Azure 資源作為一個統一的整體來管理。 透過使用部署堆疊,你可以對範本 azd 和應用程式相關的資源進行額外控制。

在本文中,您將學會如何:

  • 啟用Azure部署堆疊支援azd
  • 使用 Azure Deployment Stacks 部署 azd 範本。
  • 使用 azd 配置來設定部署堆疊的行為。

啟用 Azure 部署堆疊支援

Azure部署堆疊支援必須透過 azd config 指令啟用:

azd config set alpha.deployment.stacks on

注意

Azure 部署堆疊支援目前仍為 alpha 版本,因此必須手動啟用。 然而,在未來的版本中,部署堆疊將成為azd的預設部署行為。 深入瞭解我們的版本控制策略。

請使用以下 azd config show 指令確認此功能是否成功啟用:

azd config show

使用部署組態部署範本

啟用部署堆疊功能後,無需再修改 azd 範本即可利用此功能的預設行為。 azd 在執行 azd up 時,會自動將已配置的範本資源包裝成 Azure 部署堆疊:

azd up

azd 使用範本中 main.bicep 檔案中定義的 Azure 部署堆疊範圍。 例如,如果您的範本範圍為訂閱或資源群組層級,您可以在相關訂閱或資源群組頁面的 Deployment stacks 頁面的 Azure 入口網站中查看相關的部署堆疊。

一張顯示 Azure 入口網站中訂閱層級部署堆疊的截圖。

選取部署堆疊以檢視其管理頁面:

一張顯示部署堆疊細節的截圖。

刪除部署堆栈

預設情況下,您可以使用標準 azd down 指令刪除部署堆疊及其相關資源:

azd down

azd down 和部署堆疊的具體行為是透過 azure.yaml 檔案來設定的。

設定部署堆疊

azd 透過 infra 檔案的 azure.yaml 區段暴露各種設定,以影響Azure部署堆疊的行為。 這些設定對應到 部署堆疊 文件中詳細說明的標準選項。 請考慮以下 azure.yaml 範例:

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
infra:
  provider: bicep
  deploymentStacks:
    actionOnUnmanage:
      resources: delete
      resourceGroups: delete
    denySettings:
      mode: denyDelete
      excludedActions:
        - Microsoft.Resources/subscriptions/resourceGroups/delete
      excludedResources:
        - <your-resource-id-1>
        - <your-resource-id-2>
      excludedPrincipals:
        - <your-targeted-principal-id-1>
        - <your-targeted-principal-id-2>
      applyToChildScopes: true
# ...
# Remaining file contents omitted
# ...

在前述範例中,以下選項在節 deploymentStacks 中定義:

  • actionOnUnmanage:當部署堆疊被刪除時,相關的Azure資源被視為未管理。 這個設定決定了 Azure 如何處理非管理資源。 可能的值包括:
    • delete 是預設值,並會銷毀由已刪除部署堆疊管理的任何資源。
    • detach 資源會保持不變,但移除與已刪除部署堆疊的關聯。
  • denySettings:一個子章節,提供對部署堆疊資源的細緻控制。
    • 模式:決定部署堆疊資源的高階限制。 可能的值包括:
      • none 是預設值,允許刪除部署堆疊資源或新增資源。
      • denyDelete 防止任何部署堆疊資源被刪除。
      • denyWriteAndDelete 防止任何部署堆疊資源被刪除,也防止新增資源加入部署堆疊。
    • excludedActions:列出部署堆疊資源中不允許的 Azure 基於角色的存取控制(RBAC)動作。
    • excludedResources:列出從 denySettings 排除的資源 ID。
    • excludedPrincipals:列出不包括在 denySettings 內的服務主体 ID。
    • applyToChildScopes:一個布林值,用來設定 deny 設定是否適用於部署堆疊中資源的子資源。 例如,SQL Server 資源有子資料庫資源。