Azure部署堆栈与 Azure 开发人员 CLI 集成

Azure 开发者 CLI(azd)支持 Azure 部署堆栈用于模板部署。 Azure部署堆栈是一种资源,可用于将一组Azure资源作为一个统一单元进行管理。 通过使用部署堆栈,可以更好地控制与 azd 模板和应用关联的资源集。

在本文中,你将学习如何:

  • azd 中启用Azure部署堆栈支持。
  • 使用Azure部署堆栈部署 azd 模板。
  • 使用 azd 配置部署堆栈行为。

启用Azure部署堆栈支持

必须通过 azd config 命令启用Azure部署堆栈支持:

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 堆栈页上的 Azure 门户中查看关联的部署堆栈。

一张显示 Azure 门户中订阅级别部署堆栈的屏幕截图。

选择部署堆栈以查看其管理页:

显示部署堆栈详细信息的屏幕截图。

删除部署堆栈

默认情况下,可以使用标准 azd down 命令删除部署堆栈及其关联的资源:

azd down

使用azure.yaml文件来配置azd down和部署堆栈的确切行为。

配置部署堆栈

azd通过 infra 文件的 azure.yaml 节公开各种配置设置,以影响Azure部署堆栈的行为。 这些设置映射到 部署堆栈 文档中详述的标准选项。 请考虑以下示例 azure.yaml

name: todo-nodejs-mongo-aca
metadata:
  template: [email protected]
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:一个布尔值,用于设置拒绝规则是否应用于部署堆栈中资源的子资源。 例如,SQL Server资源具有子数据库资源。