Azure DevOps CI/CD部署Azure Data Factory时旧资源未清理问题求助
ADF CI/CD部署残留旧资源解决方案
问题原因
该问题是Azure ARM模板默认部署逻辑导致的,默认的增量部署模式只会新增或覆盖模板中存在的资源,不会删除生产环境中存在、但当前部署模板里已经不存在的旧资源,重命名、删除资源类的变更都会触发这个问题。
解决方法
- 方案1:修改ARM部署模式为完整模式
直接在Azure DevOps的ARM部署任务中将部署模式改为完整模式即可,该模式下部署时会自动清理目标资源组中所有未在当前模板中定义的资源。注意:如果你的生产资源组中除了要部署的ADF之外还存放了其他独立资源,不要直接使用完整模式,避免误删其他资源,建议先将ADF迁移到专属的独立资源组后再操作。
- 方案2:使用ADF官方CI/CD扩展的内置清理开关
如果你用的是Azure官方提供的ADF CI/CD部署任务,直接勾选任务配置中的「删除不在模板中的资源」选项即可,不需要修改全局部署模式,也不会影响同资源组下的其他资源。 - 方案3:手动添加资源清理步骤
不想调整部署模式的话可以在部署任务后新增PowerShell步骤:- 先拉取当前生产ADF的所有资源列表
- 对比本次部署的ARM模板中定义的资源列表
- 调用
Remove-AzDataFactoryV2*系列命令删除两边差异的冗余资源
前置校验
确认你部署用的ARM模板是从开发环境ADF自动生成的adf_publish分支拉取的最新版本,不是手动修改过的旧模板,避免漏带新资源定义导致误清理。
注意事项
所有清理类操作都要先在测试环境验证可行性后再到生产执行,如果生产ADF存在不需要和开发同步的独立资源,需要提前将这些资源加入清理规则的排除列表。
内容的提问来源于stack exchange,提问作者KavileBhagavathi
相关产品推荐
相关产品推荐

