Azure二头肌 - 部署失败(冲突)正在进行此或依赖资源的另一个操作(另一个poperationInprogress)

发布于 2025-02-07 08:03:35 字数 3238 浏览 3 评论 0原文

我是二头肌的新手,并尝试使用模块来创建VNET和一个子网。我有以下两个模块

vnet.bicep

param name string
param location string
param addressPrefixes array
param tags object

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: name
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: addressPrefixes
    }
  }

  tags: tags
}

subnet.bicep

param parentVnetName string
param name string
param addressPrefix string

resource parentVnet 'Microsoft.Network/virtualNetworks@2020-11-01' existing = {
  name: parentVnetName
}

resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-08-01' = {
  name: name
  parent: parentVnet
  properties: {
    addressPrefix: addressPrefix
  }
}

我正在尝试使用以下配置来创建VNET和多个子网。

param location string = 'uksouth'

param vnet object = {
  name: 'vnet'
  addressPrefixes: [
    '10.0.0.0/16'
  ]
  subnets: [
    {
      name: 'subnet1'
      addressPrefix: '10.0.1.0/24'
    }
    {
      name: 'subnet2'
      addressPrefix: '10.0.2.0/24'
    }
  ]
}

targetScope = 'subscription'

resource rg 'Microsoft.Resources/resourceGroups@2021-01-01' = {
  name: 'rg'
  location: location
  tags: {}
}

module vnetsym 'modules/vnet.bicep' = {
  scope: rg
  name: vnet.name
  params: {
    name: vnet.name
    location: location
    addressPrefixes: vnet.addressPrefixes
    tags: {}
  }
}

module subnetsym 'modules/subnet.bicep' = [for subnet in vnet.subnets: {
  scope: rg
  name: subnet.name
  params: {
    name: subnet.name
    addressPrefix: subnet.addressPrefix
    parentVnetName: vnet.name
  }
  dependsOn: [
    vnetsym
  ]
}]

但是,二头肌似乎无法解决依赖项并丢弃以下错误。除了这种部署,没有其他操作正在进行中。为什么在这种情况下,模块依赖性不起作用?如何修复它?

{"status":"Failed","error":{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"Conflict","message":"{\r\n  \"status\": \"Failed\",\r\n  \"error\": {\r\n    \"code\": \"ResourceDeploymentFailure\",\r\n    \"message\": \"The resource operation completed with terminal provisioning state 'Failed'.\",\r\n    \"details\": [\r\n      {\r\n        \"code\": \"DeploymentFailed\",\r\n        \"message\": \"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\r\n        \"details\": [\r\n          {\r\n            \"code\": \"Conflict\",\r\n            \"message\": \"{\\r\\n  \\\"error\\\": {\\r\\n 
\\\"code\\\": \\\"AnotherOperationInProgress\\\",\\r\\n    \\\"message\\\": \\\"Another operation on this or dependent resource is in progress. To retrieve status of the operation use uri: https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Network/locations/uksouth/operations/ef9f087b-0448-44a2-ab05-9579837bf9de?api-version=2021-08-01.\\\",\\r\\n    \\\"details\\\": []\\r\\n  }\\r\\n}\"\r\n          }\r\n        ]\r\n      }\r\n    ]\r\n  }\r\n}"}]}}

我还注意到这种行为不一致。有时没有创建子网,有时仅创建一个子网。我还能够通过多次部署来成功完成部署!

I am new to bicep and trying to use modules to create a VNet and a subnet. I have the following two modules

vnet.bicep

param name string
param location string
param addressPrefixes array
param tags object

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: name
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: addressPrefixes
    }
  }

  tags: tags
}

subnet.bicep

param parentVnetName string
param name string
param addressPrefix string

resource parentVnet 'Microsoft.Network/virtualNetworks@2020-11-01' existing = {
  name: parentVnetName
}

resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-08-01' = {
  name: name
  parent: parentVnet
  properties: {
    addressPrefix: addressPrefix
  }
}

I am trying the use the below config to create a vnet and multiple subnets.

param location string = 'uksouth'

param vnet object = {
  name: 'vnet'
  addressPrefixes: [
    '10.0.0.0/16'
  ]
  subnets: [
    {
      name: 'subnet1'
      addressPrefix: '10.0.1.0/24'
    }
    {
      name: 'subnet2'
      addressPrefix: '10.0.2.0/24'
    }
  ]
}

targetScope = 'subscription'

resource rg 'Microsoft.Resources/resourceGroups@2021-01-01' = {
  name: 'rg'
  location: location
  tags: {}
}

module vnetsym 'modules/vnet.bicep' = {
  scope: rg
  name: vnet.name
  params: {
    name: vnet.name
    location: location
    addressPrefixes: vnet.addressPrefixes
    tags: {}
  }
}

module subnetsym 'modules/subnet.bicep' = [for subnet in vnet.subnets: {
  scope: rg
  name: subnet.name
  params: {
    name: subnet.name
    addressPrefix: subnet.addressPrefix
    parentVnetName: vnet.name
  }
  dependsOn: [
    vnetsym
  ]
}]

However, bicep seems to fail to work out the dependencies and throws the below error. There are no other operations in progress but this deployment. Why does the module dependency not work in this case and how do I fix it?

{"status":"Failed","error":{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"Conflict","message":"{\r\n  \"status\": \"Failed\",\r\n  \"error\": {\r\n    \"code\": \"ResourceDeploymentFailure\",\r\n    \"message\": \"The resource operation completed with terminal provisioning state 'Failed'.\",\r\n    \"details\": [\r\n      {\r\n        \"code\": \"DeploymentFailed\",\r\n        \"message\": \"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\r\n        \"details\": [\r\n          {\r\n            \"code\": \"Conflict\",\r\n            \"message\": \"{\\r\\n  \\\"error\\\": {\\r\\n 
\\\"code\\\": \\\"AnotherOperationInProgress\\\",\\r\\n    \\\"message\\\": \\\"Another operation on this or dependent resource is in progress. To retrieve status of the operation use uri: https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Network/locations/uksouth/operations/ef9f087b-0448-44a2-ab05-9579837bf9de?api-version=2021-08-01.\\\",\\r\\n    \\\"details\\\": []\\r\\n  }\\r\\n}\"\r\n          }\r\n        ]\r\n      }\r\n    ]\r\n  }\r\n}"}]}}

I've also noticed that the behaviour is inconsistent. Sometimes no subnets are created, sometimes just one subnet is created. I have also been able to complete the deployment successfully on occasion by deploying multiple times!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖树树初阳… 2025-02-14 08:03:35

这里的问题是子网模块是并行部署的。他们都试图以相同的相同更新VNET,从而导致您看到的冲突错误。

在您的情况下,您可以使用模块装饰器

默认情况下,资源是并行部署的。添加批处理装饰器时,您会串行部署实例。

因此,这应该有效:

@batchSize(1)
module subnetsym 'modules/subnet.bicep' = [for subnet in vnet.subnets: {
...

您也应该在VNET资源中部署子网。如果您重新运行模板,它将在重新创建子网之前删除子网。几乎没有问题:

The issue here is that the subnet modules are deployed in parallel. They both try to update the vnet at the same resulting in the conflict error you're seeing.

In you case you can use a module decorator:

By default, resources are deployed in parallel. When you add the batchSize decorator, you deploy instances serially.

So this should work:

@batchSize(1)
module subnetsym 'modules/subnet.bicep' = [for subnet in vnet.subnets: {
...

Also you should be deploying the subnets inside the vnet resource. If you re-run your template, it will delete the subnets before recreating them. There are few issues related:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文