托管的资源

已完成

由部署堆栈管理的 Azure 资源称为受管理资源。 该资源在创建堆栈时使用的模板文件中定义。

当你在准备存款应用程序的下一个冲刺(sprint)时,你希望详细了解部署堆栈是如何管理资源的。 在开发中测试功能时,你预期会对应用程序进行快速和频繁的更改。 在应用程序中添加、修改或删除资源之前,你需要知道这些资源是如何被管理的。

在本单元中,你将了解受管理资源和 action on unmanage 参数。 此参数决定了 Azure 将如何处理部署堆栈不再管理的资源。

了解受管理资源

在了解如何更新部署堆栈之前,需要先了解堆栈是如何管理资源的。 创建部署堆栈后,堆栈将开始负责管理模板文件中所述的资源。 这些资源称为受管理资源。 只要资源是在部署堆栈的模板文件中定义的,即视为受管理资源。 可将部署堆栈视为一系列指针,这些指针将应用程序的资源归组到一个逻辑单元中,且不考虑这些资源可能被部署到何处。

可以在不同范围(例如资源组、订阅和管理组)内创建部署堆栈。 部署堆栈可以管理的资源取决于堆栈创建时的相应范围。 例如,如果是在某个订阅范围内部署堆栈,则堆栈可以管理该订阅中的资源组,以及同一订阅内任何资源组中的资源。

表示部署堆栈和受管理资源的图。

不再由部署堆栈管理的资源会发生什么? 如果模板文件中不再定义某个资源且堆栈已更新,则该资源可能被剥离或删除。 剥离的资源是不再由堆栈管理的资源,但仍存在于 Azure 中。 删除的资源是从 Azure 中删除的资源,其所有数据都将丢失。

Action on unmanage

你能够控制 Azure 如何处理拆离的资源、资源组和管理组,方法是使用名为“action on unmanage”参数的属性。 创建、修改或删除部署堆栈时,可以设置此参数。

这三个操作都可以设置 action on unmanage 参数的行为。 请记住,最新设置的值优先生效。

例如,如果创建部署堆栈时将该参数设置为 --action-on-unmanage detachAll,Azure 会分离不再由堆栈管理的任何资源。 如果后续运行一个更新操作,并将该参数设置为 --action-on-unmanage deleteAll,其行为默认为 deleteAll

--action-on-unmanage 参数有三个可能的值:

  • deleteAll - 删除资源、资源组和管理组
  • deleteResources - 删除资源,但剥离资源组和管理组
  • detachAll - 剥离所有资源、资源组和管理组

注意

在本模块中,我们将使用资源组范围的部署堆栈。 在这种情况下,资源组本身不由堆栈管理。 action on unmanage 参数的“删除全部”值不会删除堆栈所在的资源组。 删除堆栈及其资源后,需要删除其资源组。

现在来看看当使用 Azure CLI az stack group show 命令并设置了 --action-on-unmanage 参数的值时的 JSON 输出。 请注意资源、资源组和管理组的行为。

  1. --action-on-unmanage deleteAll

    "actionOnUnmanage": {
        "managementGroups": "delete",
        "resourceGroups": "delete",
        "resources": "delete"
    },
    
  2. --action-on-unmanage deleteResources

    "actionOnUnmanage": {
        "managementGroups": "detach",
        "resourceGroups": "detach",
        "resources": "delete"
    },
    
  3. --action-on-unmanage detachAll

    "actionOnUnmanage": {
        "managementGroups": "detach",
        "resourceGroups": "detach",
        "resources": "detach"
    },
    

例如,如果创建部署堆栈时将该参数设置为 -ActionOnUnmanage DetachAll,Azure 会分离不再由堆栈管理的任何资源。 如果后续运行一个更新操作,并将该参数设置为 -ActionOnUnmanage DeleteAll,其行为默认为 DeleteAll

-ActionOnUnmanage 参数有三个可能的值:

  • DeleteAll - 删除资源、资源组和管理组
  • DeleteResources - 删除资源,但剥离资源组和管理组
  • DetachAll - 剥离所有资源、资源组和管理组

注意

在本模块中,我们将使用 resrouce 组范围的部署堆栈。 在这种情况下,资源组不受堆栈管理。 > action on unmanage 参数的“删除全部”值不会删除堆栈所在的资源组。 删除堆栈及其资源后,必须删除资源组。

现在来看看当使用 Azure PowerShell Get-AzResourceGroupDeploymentStack 命令并设置了 -ActionOnUnmanage 参数的值时的 json 输出。 请注意资源、资源组和管理组的行为。

  1. -ActionOnUnmanage DeleteAll

    resourcesCleanupAction        : delete
    resourceGroupsCleanupAction   : delete
    managementGroupsCleanupAction : delete
    
  2. -ActionOnUnmanage DeleteResources

    resourcesCleanupAction        : delete
    resourceGroupsCleanupAction   : detach
    managementGroupsCleanupAction : detach
    
  3. -ActionOnUnmanage DetachAll

    resourcesCleanupAction        : detach
    resourceGroupsCleanupAction   : detach
    managementGroupsCleanupAction : detach