使用 Azure 虚拟网络管理器部署 IPAM 池和静态CIDR - Bicep

Azure 虚拟网络管理器提供集中式 IP 地址管理(IPAM),可帮助你避免在虚拟网络中重叠的地址空间。 使用 IPAM 池,可以定义大型地址范围,并自动将不重叠的子网分配给虚拟网络。

本文介绍如何使用 Bicep 模板:

  • 创建具有 IPAM 功能的 Azure 虚拟网络管理器实例
  • 使用静态 CIDR 分配来设置 IPAM 池
  • 将现有虚拟网络与 IPAM 池相关联
  • 创建从 IPAM 池自动接收 IP 地址的新虚拟网络

完成后,你将拥有一个工作 IPAM 配置,可用于管理跨多个虚拟网络的 IP 地址分配。

重要

目前,Azure Virtual Network Manager中的 IP 地址管理(IPAM)功能已在Azure Virtual Network Manager可用的所有区域中正式发布。

先决条件

  • 拥有有效订阅的 Azure 帐户。 创建账户
  • 本地安装的 Azure CLI 或 Azure PowerShell。

查阅 Bicep 文件

以下 Bicep 模板创建具有 IPAM 池和静态 CIDR 分配的 Azure 虚拟网络管理器实例。 该模板定义以下 Azure 资源:

该模板采用以下参数:

参数 Purpose 默认值
locationName 用于网络管理器及其子资源的 Azure 区域。 目标资源组的位置
networkManagerName Azure Virtual Network Manager 实例的名称。 vnm-learn-prod-${locationName}-001
ipamPoolName 在网络管理器下创建的IPAM池名称。 ipam-pool-learn-prod-001
ipamPoolAddressPrefix IPAM池分配的地址空间。 10.0.0.0/16
staticCidrName 池中静态CIDR预留的名称。 static-cidr-reserved-001
staticCidrAddressPrefix 地址范围由静态CIDR保留。 它必须属于 ipamPoolAddressPrefix 10.0.1.0/24
@description('Location for resources.')
param locationName string = resourceGroup().location

@description('Name of the Virtual Network Manager')
param networkManagerName string = 'vnm-learn-prod-${locationName}-001'

@description('Name of the IPAM pool')
param ipamPoolName string = 'ipam-pool-learn-prod-001'

@description('Address prefix of the IPAM pool')
param ipamPoolAddressPrefix string = '10.0.0.0/16'

@description('Name of the static CIDR')
param staticCidrName string = 'static-cidr-reserved-001'

@description('Address prefix of the static CIDR')
param staticCidrAddressPrefix string = '10.0.1.0/24'

// Virtual Network Manager
resource networkManager 'Microsoft.Network/networkManagers@2024-05-01' = {
  name: networkManagerName
  location: locationName
  properties: {
    networkManagerScopes: {
      managementGroups: []
      subscriptions: [
        subscription().id
      ]
    }
    networkManagerScopeAccesses: [
      'Connectivity'
    ]
  }
}

// IPAM Pool
resource ipamPool 'Microsoft.Network/networkManagers/ipamPools@2024-05-01' = {
  parent: networkManager
  name: ipamPoolName
  location: locationName
  properties: {
    addressPrefixes: [
      ipamPoolAddressPrefix
    ]
  }
}

// Static CIDR
resource staticCidr 'Microsoft.Network/networkManagers/ipamPools/staticCidrs@2024-05-01' = {
  parent: ipamPool
  name: staticCidrName
  properties: {
    addressPrefixes: [
      staticCidrAddressPrefix
    ]
  }
}

部署 Bicep 模板

将 Bicep 模板保存到本地计算机作为 main.bicep,然后使用 Azure CLI 或 Azure PowerShell 部署它。

az group create \
    --name rg-network-manager \
    --location chinanorth3

az deployment group create \
    --resource-group rg-network-manager \
    --template-file main.bicep

部署需要数分钟才能完成。 部署完成后,会看到一条消息,指示部署成功。

将现有虚拟网络关联到 IPAM 池

以下 Bicep 模板将现有虚拟网络与 IPAM 池相关联。 如果您有要管理的现有虚拟网络,并希望通过 Azure 虚拟网络管理器的 IPAM 功能进行管理,则此方案非常有用。

该模板定义此 Azure 资源:

@description('Name of an existing virtual network')
param existingVnetName string = 'vnet-existing-001'

@description('Location of an existing virtual network')
param existingVnetLocation string = 'chinanorth3'

@description('Resource ID of an existing IPAM pool')
param existingIpamPoolId string = '/subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourceGroups/rg-network-manager/providers/Microsoft.Network/networkManagers/vnm-learn-prod-chinanorth3-001/ipamPools/ipam-pool-learn-prod-001'

// Virtual Network
resource existingVnet 'Microsoft.Network/virtualNetworks@2024-05-01' = {
  name: existingVnetName
  location: existingVnetLocation
  properties: {
    addressSpace: {
      ipamPoolPrefixAllocations: [
        {
          pool: {
            id: existingIpamPoolId
          }
        }
      ]
    }
  }
}

部署关联模板

  1. 将 Bicep 模板作为 associate-existing-vnet.bicep 保存到本地计算机。

  2. 使用文本或代码编辑器更新文件中的以下参数:

    • 更改为 existingVnetName 现有虚拟网络的名称
    • existingVnetLocation 更改为现有虚拟网络的位置
    • 更改为 existingIpamPoolId 现有 IPAM 池的资源 ID
  3. 保存 associate-existing-vnet.bicep 文件。

  4. 使用 Azure CLI 或 Azure PowerShell 部署 Bicep 模板。 替换 rg-existing-vnet 为现有虚拟网络的资源组名称:

az deployment group create \
    --resource-group rg-existing-vnet \
    --template-file associate-existing-vnet.bicep

部署完成后,会看到一条消息,指示部署成功。

使用 IPAM 池分配创建新的虚拟网络

以下 Bicep 模板创建一个新的虚拟网络,该虚拟网络会自动从 IPAM 池接收 IP 地址分配。 此方法通过确保不重叠的地址空间来简化虚拟网络创建。

该模板定义此 Azure 资源:

@description('Name of new virtual network')
param newVnetName string = 'vnet-learn-prod-001'

@description('Name of default subnet')
param subnetName string = 'snet-default-001'

@description('Location for virtual network')
param locationName string = resourceGroup().location

@description('Resource ID of an existing IPAM pool')
param existingIpamPoolId string = '/subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourceGroups/rg-network-manager/providers/Microsoft.Network/networkManagers/vnm-learn-prod-chinanorth3-001/ipamPools/ipam-pool-learn-prod-001'

@description('Number of IP addresses for virtual network')
param vnetNumberOfIpAddresses string = '256'

@description('Number of IP addresses for subnet')
param subnetNumberOfIpAddresses string = '128'

// Virtual Network
resource newVnet 'Microsoft.Network/virtualNetworks@2024-05-01' = {
  name: newVnetName
  location: locationName
  properties: {
    addressSpace: {
      ipamPoolPrefixAllocations: [
        {
          numberOfIpAddresses: vnetNumberOfIpAddresses
          pool: {
            id: existingIpamPoolId
          }
        }
      ]
    }
    subnets: [
      {
        name: subnetName
        properties: {
          ipamPoolPrefixAllocations: [
            {
              numberOfIpAddresses: subnetNumberOfIpAddresses
              pool: {
                id: existingIpamPoolId
              }
            }
          ]
        }
      }
    ]
  }
}

部署新的虚拟网络模板

  1. 将 Bicep 模板另存为 create-ipam-managed-vnet.bicep,将 Bicep 模板保存到本地计算机。

  2. 使用文本或代码编辑器更新文件中的以下参数:

    • 更改为 existingIpamPoolId 现有 IPAM 池的资源 ID
  3. 保存 create-ipam-managed-vnet.bicep 文件。

  4. 使用 Azure CLI 或 Azure PowerShell 部署 Bicep 模板:

az deployment group create \
    --resource-group rg-network-manager \
    --template-file create-ipam-managed-vnet.bicep

部署完成后,会看到一条消息,指示部署成功。

验证部署

部署模板后,验证 IPAM 池和虚拟网络配置是否正常工作:

  1. Azure 门户中,导航到虚拟网络管理器实例。

  2. IP 地址管理下,选择 IP 地址池

  3. 选择 IPAM 池以查看其分配和使用情况统计信息。

  4. “设置”下,选择 “分配 ”以查看与池关联的所有资源,包括静态 CIDR 块和虚拟网络。

清理资源

如果不再需要在本快速入门中创建的资源,请删除资源组及其包含的所有资源:

az group delete --name rg-network-manager --yes --no-wait

后续步骤

在本快速入门中,你已使用 IPAM 池部署了 Azure 虚拟网络管理器,并了解了如何将虚拟网络与 IP 地址池相关联。 若要详细了解 Azure 虚拟网络管理器中的 IP 地址管理,请执行以下作: