3

在我的二头肌文件中,我获得了对现有 vnet 的引用,如下所示:

resource existingVNET 'Microsoft.Network/virtualNetworks@2021-02-01' existing = {
  name: 'the-existing-vnet'
}

我试图为每个子网包含多个(确切地说是四个)资源语句,如下所示:

resource subnetPbdResource 'Microsoft.Network/virtualNetworks/subnets@2020-11-01' = {
  parent: existingVNET
  name: 'first-snet'
  ...
}
resource subnetPbdResource 'Microsoft.Network/virtualNetworks/subnets@2020-11-01' = {
  parent: existingVNET
  name: 'second-snet'
  ...
}

...但是,当我运行这个(使用az deployment group create ...)a 得到一个错误:with code AnotherOperationInProgress。在 vnet 下创建了一个随机(似乎)子网。

我还尝试定义一个子网数组,如下所示:

var subnets = [
  {
    name: 'api'
    subnetPrefix: '10.144.0.0/24'
  }
  {
    name: 'worker'
    subnetPrefix: '10.144.1.0/24'
  }
]

...但我找不到将现有 vnet 与子网数组分配的方法。.properties.subnets似乎无法访问现有的 vnet 资源。

任何提示表示赞赏!

4

2 回答 2

2

当 ARM 试图同时部署多个子网资源时,它似乎陷入了困境。

您可以使用dependsOn来确保一个接一个地创建子网:

resource existingVNET 'Microsoft.Network/virtualNetworks@2021-02-01' existing = {
  name: 'the-existing-vnet'
}

resource subnetPbdResource 'Microsoft.Network/virtualNetworks/subnets@2021-02-01' = {
  name: 'first-snet'
  parent: existingVNET
  properties: {
    addressPrefix: '10.0.1.0/24'
  }
}

resource subnetPbdResource2 'Microsoft.Network/virtualNetworks/subnets@2021-02-01' = {
  name: 'second-snet'
  parent: existingVNET
  properties: {
    addressPrefix: '10.0.2.0/24'
  }
  dependsOn: [
    subnetPbdResource
  ]
}

resource subnetPbdResource3 'Microsoft.Network/virtualNetworks/subnets@2021-02-01' = {
  name: 'third-snet'
  parent: existingVNET
  properties: {
    addressPrefix: '10.0.3.0/24'
  }
  dependsOn: [
    subnetPbdResource2
  ]
}

于 2021-07-02T14:51:06.283 回答
2

我在Bicep github 讨论上也得到了很好的回答

基本上它归结为构建一个子网数组,使用@batchSize(1) 来确保子网的串行创建(我猜这与dependsOn@Manuel Batsching 的回答中使用的效果相同)并将子网数组作为参数传递给Resource“创建子网”陈述”。明显优势:无需重复代码创建子网

于 2021-07-05T06:43:17.560 回答