【问题标题】:Complete mode deployment in Azure DevOps for ADFAzure DevOps for ADF 中的完整模式部署
【发布时间】:2020-11-02 08:44:18
【问题描述】:

我尝试为 azure Data Factory 部署 ARM 模板,作为 DevOps 实施的一部分。

部署模式选择为complete,以便清理现有的 adf 实例并仅部署 ARM 模板中可用的管道。如下图

当我尝试运行部署时,它失败并出现错误

##[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://docs.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 任务吗?

【问题讨论】:

    标签: azure azure-devops azure-data-factory azure-data-factory-2


    【解决方案1】:

    您不能将部署范围限制为低于您注意到的 ResourceGroup。

    您这样做的唯一方法是将 ADF 放在单独的资源组中,但我认为这是不可能的。

    执行此操作的第二种方法是通过门户或 powershell 删除 ADF,然后对仅包含 ADF 定义的 ARM 模板进行增量部署。

    Microsoft 为 ARM 部署推出了一项名为 What-If 的新功能。这是一个非常好的功能,可以检查部署模板时哪些资源会发生什么变化。请注意,它目前仅适用于 powershell 核心。如果您使用 ARM 模板,这可以帮助您并在部署任何内容之前捕获资源删除。

    【讨论】:

    • 我们可以在我们的发布管道中使用这个假设功能作为一个 powershell 任务吗?
    • 当然,您可以根据例如此 powershell 命令的输出在任务组中创建条件。然而,在 yamls 中,设置条件要容易得多,因为您可以为每个任务创建条件。然而,在这两种情况下,这都需要在 powershell 中使用一些自定义逻辑,并根据假设输出为变量分配一些值,然后根据 ARM 部署本身的条件是否应该发生。
    • 您能否提供一个示例,如何在发布管道任务中添加假设条件,或者是否有任何文档说明如何在 ARM 部署管道中添加假设条件? Microsoft 的解释 [docs.microsoft.com/en-us/azure/azure-resource-manager/templates/… 没有描述如何在 azure devops 门户中进行操作。
    • 您可以根据本章设置一个标志“ChangesDetected”为真或假:docs.microsoft.com/en-us/azure/azure-resource-manager/templates/… 然后在管道中设置变量:docs.microsoft.com/en-us/azure/devops/pipelines/process/… 然后使用这样的 yaml 条件:docs.microsoft.com/en-us/azure/devops/pipelines/process/…
    • 这个主题很宽泛,在您使用的经典管道中有点问题。我建议迁移到 yaml。它们提供了更多控制权,但会检查您的要求,因为它们不支持经典管道所做的一切。
    【解决方案2】:

    部署数据工厂时,请勿选择完成作为您的部署模式。这将覆盖资源组中的所有资源,包括非 ADF 实体。

    选择 增量 将仅部署位于 ARM 模板中的资源。如果从 adf_publish 分支生成,那么它将包含您工厂中的所有资源。

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 2020-03-24
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多