我尝试部署Azure数据工厂的ARM模板作为DevOps实现的一部分。
为了清理现有adf示例并仅部署ARM模板中可用的管道,部署模式选择为complete。如下所示.
当我尝试运行部署时,它失败并显示错误,
##[error]The deployment failed because some resources could not be deleted. This might be due to not having permissions to delete resources in the targeted scope. Please see https://aka.ms/arm-debug for usage details.
2020-11-02T05:33:34.5795133Z ##[error]Check out the troubleshooting guide to see if your issue is addressed: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-resource-group-deployment?view=azure-devops#troubleshooting
我在调试这个问题的时候,可以理解为部署范围选择为资源组,部署任务尝试删除该资源组下的所有资源失败,因为访问问题无法删除除ADF示例以外的资源。
由于我无法访问其他资源,它们没有被删除,否则我可能会通过删除所有其他资源,如ADLS,databricks,sql...
由于我正在部署ADF ARM模板,有没有办法将部署范围限制为ADF示例,而不会影响其他资源。
任何线索赞赏!
我有一个关于Azure为ARM模板部署提供的What-If功能的查询。我们可以在我们的发布管道中使用它作为一个powershell任务吗?
2条答案
按热度按时间ars1skjm1#
正如您所注意到的,不能将部署范围限制在低于ResourceGroup的范围。
唯一的方法,你这样做将要么把ADF在一个单独的资源组,但我认为这是不可能的。
第二种方法是通过portal或powershell删除ADF,然后对只有ADF定义的ARM模板进行增量部署。
微软为ARM部署推出了一项名为What-If的新功能。这是一个超级好的功能,可以检查在部署模板时会发生哪些资源的更改。请注意,目前它只适用于powershell核心。如果您使用ARM模板,这可以帮助您在部署任何内容之前捕获资源删除。
ibps3vxo2#
部署数据工厂时,不要选择【完成】作为部署模式。这将覆盖资源组中的所有资源,包括非ADF实体。
选择Incremental将仅部署位于ARM模板中的资源。如果是从adf_publish分支生成的,则它将包含工厂中的所有资源。