Azure二头肌 - 部署失败(冲突)正在进行此或依赖资源的另一个操作(另一个poperationInprogress)
我是二头肌的新手,并尝试使用模块来创建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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这里的问题是子网模块是并行部署的。他们都试图以相同的相同更新VNET,从而导致您看到的冲突错误。
在您的情况下,您可以使用模块装饰器:
因此,这应该有效:
您也应该在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:
So this should work:
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: