托管的资源
由部署堆栈管理的 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 输出。 请注意资源、资源组和管理组的行为。
--action-on-unmanage deleteAll
"actionOnUnmanage": { "managementGroups": "delete", "resourceGroups": "delete", "resources": "delete" },
--action-on-unmanage deleteResources
"actionOnUnmanage": { "managementGroups": "detach", "resourceGroups": "detach", "resources": "delete" },
--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 输出。 请注意资源、资源组和管理组的行为。
-ActionOnUnmanage DeleteAll
resourcesCleanupAction : delete resourceGroupsCleanupAction : delete managementGroupsCleanupAction : delete
-ActionOnUnmanage DeleteResources
resourcesCleanupAction : delete resourceGroupsCleanupAction : detach managementGroupsCleanupAction : detach
-ActionOnUnmanage DetachAll
resourcesCleanupAction : detach resourceGroupsCleanupAction : detach managementGroupsCleanupAction : detach