Bicep 中的属性迭代

本文介绍如何在 Bicep 文件中创建一个属性的多个实例。 可向资源的 properties 部分添加一个循环,并在部署期间动态设置属性的项数。 还可避免在 Bicep 文件中重复语法。

你只能对顶级资源使用循环,即使在将循环应用到属性时也是如此。 若要了解如何将子资源更改为顶级资源,请参阅子资源的迭代

还可以将循环用于 modulesresourcesvariablesoutputs

语法

可通过以下方式使用循环声明多个属性:

  • 使用循环索引。

    <property-name>: [for <index> in range(<start>, <stop>): {
        <properties>
    }]
    
  • 循环访问数组。

    <property-name>: [for <item> in <collection>: {
        <properties>
    }]
    

    有关详细信息,请参阅循环数组

  • 循环访问数组和索引。

    <property-name>: [for (<item>, <index>) in <collection>: {
        <properties>
    }]
    

循环限制

Bicep 循环具有以下限制:

  • 无法在多个属性级别上循环。
  • 循环迭代不能为负数,也不能超过 800 次迭代。

循环数组

此示例将循环访问 subnets 的数组,以在一个虚拟网络中创建两个子网。

param rgLocation string = resourceGroup().location

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

resource vnet 'Microsoft.Network/virtualNetworks@2020-07-01' = {
  name: 'vnet'
  location: rgLocation
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.144.0.0/20'
      ]
    }
    subnets: [for subnet in subnets: {
      name: subnet.name
      properties: {
        addressPrefix: subnet.subnetPrefix
      }
    }]
  }
}

后续步骤