如何根据 Azure 中的部署名称删除所有已部署的资源

Posted

技术标签:

【中文标题】如何根据 Azure 中的部署名称删除所有已部署的资源【英文标题】:How to remove all deployed resources based on deployment name in Azure 【发布时间】:2016-03-24 23:14:38 【问题描述】:

我正在使用 ARM 模板配置新的 Azure 环境。 为了部署,我使用 Azure PowerShell New-AzureRmResourceGroupDeployment 命令,我在其中指定 DeploymentNameResourceGroupName 等。

但是,当我想通过运行删除部署的资源时

Remove-AzureRmResourceGroupDeployment -Name DeploymentName -ResourceGroupName RGname -Force 

它不会删除资源。它只是删除 Azure 门户中部署选项卡中的一个标记。有没有办法回滚或删除相关资源的部署?我不想删除整个资源组。

【问题讨论】:

【参考方案1】:

Microsoft 的一般指导是,资源组包含零个或多个共享公共生命周期的资源。因此,他们可能会告诉您将不同的部署分成不同的资源组。

我实际上已经尝试过与您之前相同的操作,但删除部署只会删除部署元数据,而不是部署提供的实际资源。能够根据资源所属的最新部署对资源进行“切片和切块”,这将是一个很棒的功能请求。

这是支持文档:

您组中的所有资源都应共享相同的生命周期。您将一起部署、更新和删除它们。如果一个资源(例如数据库服务器)需要存在于不同的部署周期中,则它应该位于另一个资源组中。

https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/#resource-groups

【讨论】:

那么,我只是删除资源组来清理从 ARM 模板部署/创建的所有资源? 是的,@FilBot3,但这比看起来更棘手:随着复杂性的增加,您的整个部署不太可能存在于一个 RG 中。例如,我们有一个集中位置 (RG),我们存储所有日志/诊断信息。因此,一个 RG 中的每个资源实际上都有另一个 RG 中的日志。在销毁资源之前,需要手动删除它们。有很多这样的案例,不仅仅是日志。 :(【参考方案2】:

如果你想卷起袖子写更多代码,你可以这样做……尽管 Trevor Sullivan 对资源的整体管理提出了最好的建议。

看看这个 cmdlet:

(Get-AzureRmResourceGroupDeploymentOperation -DeploymentName $DeploymentName -ResourceGroupName $RGName).Properties.ProvisioningOperation

(Get-AzureRmResourceGroupDeploymentOperation -DeploymentName $DeploymentName -ResourceGroupName $RGName).Properties.TargetResource.id

第一个将告诉您该操作是否是对资源的创建操作,第二个将为您提供resourceId,然后您可以使用它来删除:

Remove-AzureRMResource

但如果您按生命周期组织资源组,则删除整个组会更容易。

这里要注意的另一件事是相互依赖的资源。我不确定在这些情况下会发生什么(无法​​删除等)。我想不出要注意的具体问题,只是我没有花太多时间以这种方式“清理”...

【讨论】:

【参考方案3】:

要删除特定资源组下的所有已部署资源,

您应该使用 Azure PowerShell 命令:

Remove-AzureRmResourceGroup [-Name] <ResourceGroupName> [-Force <SwitchParameter>]

Remove-AzureRmResourceGroupDeployment 仅按名称和资源组名称删除了特定部署,但没有删除资源。

希望这会有所帮助!

【讨论】:

OP 专门询问删除部署中的所有资源,而不仅仅是部署元数据或删除整个资源组

以上是关于如何根据 Azure 中的部署名称删除所有已部署的资源的主要内容,如果未能解决你的问题,请参考以下文章

在 monorepo Azure 中部署单一服务

在Azure中重新部署VM

azure devops 中的部署前批准

必看!如何计划您的Microsoft Teams+Azure之旅

Azure 服务结构资源管理器中的 Java Webapp 部署

如何从 Azure DevOps 中的部署后批准/部署后门调用 Powershell 脚本