閱讀英文

共用方式為

使用 Bicep 创建虚拟网络资源

许多 Azure 部署需要部署和配置网络资源。 可以使用 Bicep 定义 Azure 网络资源。

虚拟网络和子网

通过创建具有类型 Microsoft.Network/virtualNetworks的资源来定义虚拟网络。

使用 subnets 属性配置子网

虚拟网络包含子网,这些子网是网络中 IP 地址的逻辑分组。 子网应始终作为子资源进行管理,并且不应在虚拟网络资源中定义 子网 属性。 此方法可确保这两种资源类型的安全且独立的生命周期。

注意

Azure 虚拟网络 API 更新为允许修改虚拟网络,而无需在 PUT 请求中包含子网属性。 以前,省略子网属性将导致删除现有子网。 使用新行为时,如果 PUT 请求中不包含子网属性,则现有子网保持不变。 将子网属性显式设置为空值会删除所有现有子网,同时提供特定的子网配置会相应地创建或更新子网。 此更改通过防止更新期间意外删除子网来简化虚拟网络管理。

最好将子网定义为 子资源,如以下示例所示:

param location string = resourceGroup().location

var virtualNetworkName = 'my-vnet'
var subnet1Name = 'Subnet-1'
var subnet2Name = 'Subnet-2'

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2024-05-01' = {
  name: virtualNetworkName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
  }

  resource subnet1 'subnets' = {
    name: subnet1Name
    properties: {
      addressPrefix: '10.0.0.0/24'
    }  }

  resource subnet2 'subnets' = {
    name: subnet2Name
    properties: {
      addressPrefix: '10.0.1.0/24'
    }    
  }
}

output subnet1ResourceId string = virtualNetwork::subnet1.id
output subnet2ResourceId string = virtualNetwork::subnet2.id

若要引用父资源外部的嵌套资源,必须使用包含的资源名称和 :: 运算符进行限定,如前面的示例所示。

网络安全组

网络安全组通常用于应用规则,控制来自子网或网络接口的流量的入站和出站流。 在 Bicep 文件中定义大量规则并在多个文件中共享它们可能会显得繁琐。 使用复杂或大型网络安全组时,请考虑使用 共享变量文件模式

专用终结点

专用终结点必须获得批准。 在某些情况下,审批会自动发生。 但另外一些情况下,你需要手动批准终结点,然后才能使用它。

专用终结点批准是一种操作,因此不能直接在 Bicep 代码中执行它。 但是,可以使用部署脚本来调用操作。 或者,你可以在 Bicep 文件外部调用操作,例如在管道脚本中。