这次分享一个ARM Template的小技巧,ARM Template可以用来部署云资源,实际上他也可以用来删除云资源,这也是ARM Template的功能之一,在部署的时候其实我们是可以指定操作方式的,默认情况下,后台会使用增量模式,也就是说ARM Template里的资源会被新增到环境中,如果在实际环境中存在,但是ARM Template中不存在的,会被系统忽略掉,不会认为不在ARM Template里定义就不应该存在,但是我们也可以使用complete mode,这种模式下,系统会严格按照ARM Template进行定义,不在ARM Template定义中的,系统会认为不应该存在与实际环境中,这种资源会被系统直接删除掉,所以这种模式其实是很危险的,一定要慎用

但是同时,我们也可以用这种模式搞些事,比如删除一些我们不需要的资源,像我们平时做实验时,实验完成后资源其实就不需要了,可以直接删掉了,如果实验环境比较大,那么需要一项一项把资源清理掉,比较耗时间,也可以选择把资源组整个删除掉,但是下次做实验又需要重新建一个,这点其实terraform就比较方便了,可以直接用destroy清理掉创建的资源,ARM Template里可以用这种方式取个巧

在VS CODE里输入arm,然后选择arm!

图片2.png


生成的会是一个空的arm template

图片3.png


可以看到资源组里现在是有资源的

图片4.png

接下来使用AzResourceGroupDeployment进行部署,注意这里指定了一个mode参数,值是complete,也就是说要求这次的部署要严格按照ARM Template里的定义来进行,不在定义里的都会被认为是不需要的资源

New-AzResourceGroupDeployment -ResourceGroupName 'test' -Mode complete -TemplateFile "D:\Tech\Cloud\Azure\ARM Template\Cleanup.json"

图片5.png


可以看到资源全都被清空了!

图片6.png


但是不是所有资源都会被完整模式清楚,这个表记录了哪些会被清楚,哪些不会

https://docs.azure.cn/zh-cn/azure-resource-manager/templates/complete-mode-deletion?WT.mc_id=AZ-MVP-5001235