首页 > 解决方案 > CLI 脚本中的 Azure 资源锁删除延迟

问题描述

我有一个 DevOps 管道,用于部署我的资源组(使用 ARM 模板)。

我的资源组有一个只读锁。在管道开始时,我运行 Azure CLI 脚本任务来移除锁。它运行良好。

紧接着,在同一个管道中,我有一个 ARM 模板部署任务。

当我的 ARM 模板部署任务运行时,它失败了,说我的资源组仍然被锁定。

如果我等待一段时间(几分钟)并重新运行 ARM 模板部署任务,它运行良好。

锁删除任务似乎有延迟。有这样的事吗?我在文档中找不到任何提及锁定删除延迟的内容。

最好的方法是什么?

标签: azureazure-devops

解决方案


我没有遇到使用az lock delete命令删除锁的延迟。

你可以多写几行脚本来检查删除后锁是否仍然存在。请参见下面的示例:

- task: AzureCLI@2
  displayName: 'Azure CLI '
  inputs:
    azureSubscription: 'Azure'
    scriptType: ps
    scriptLocation: inlineScript
    inlineScript: |
     #delete the lock
     az lock delete --name lockname --resource-group group --resource-name appname --resource-type  Microsoft.Web/sites
     # check if the deletion is finished, wait for 5s if not.
     While(
      $(az lock list --resource-group group --resource-name appname --resource-type  Microsoft.Web/sites --output tsv --query "[?name=='lockname'].id")
     ){
       Start-Sleep -s 5
     }

在上面的 inlineScript 中,az lock delete命令删除了锁。然后az lock list --query "[?name=='lockname'].id"命令将检查锁是否仍然存在。如果锁被成功删除。然后以下任务将继续运行。


推荐阅读