Поделиться через


Функции CIDR для шаблонов ARM

В этой статье описываются функции для работы с CIDR в шаблоне Azure Resource Manager (шаблон ARM).

Совет

Мы рекомендуем использовать Bicep, так как он предоставляет те же возможности, что и шаблоны ARM, и имеет более простой синтаксис. Дополнительные сведения см. в разделе о функциях cidr .

parseCidr

parseCidr(network)

Анализирует диапазон IP-адресов в нотации CIDR, чтобы получить различные свойства диапазона адресов.

В Bicep используйте функцию parseCidr .

Параметры

Параметр Обязательное поле Type Описание
сеть Да строка Строка в нотации CIDR, содержащая диапазон IP-адресов для преобразования.

Возвращаемое значение

Объект, содержащий различные свойства диапазона адресов.

Примеры

В следующем примере анализируется строка CIDR IPv4:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v4info": {
      "type": "object",
      "value": "[parseCidr('10.144.0.0/20')]"
    }
  }
}

В предыдущем примере возвращается следующий объект:

{
  "network":"10.144.0.0",
  "netmask":"255.255.240.0",
  "broadcast":"10.144.15.255",
  "firstUsable":"10.144.0.1",
  "lastUsable":"10.144.15.254",
  "cidr":20
}

В следующем примере анализируется строка CIDR IPv6:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v6info": {
      "type": "object",
      "value": "[parseCidr('fdad:3236:5555::/48')]"
    }
  }
}

В предыдущем примере возвращается следующий объект:

{
  "network":"fdad:3236:5555::",
  "netmask":"ffff:ffff:ffff::",
  "firstUsable":"fdad:3236:5555::",
  "lastUsable":"fdad:3236:5555:ffff:ffff:ffff:ffff:ffff",
  "cidr":48
}

cidrSubnet

cidrSubnet(network, newCIDR, subnetIndex)

Разделяет указанный диапазон IP-адресов в нотации CIDR на подсети с новым значением CIDR и возвращает диапазон IP-адресов подсети с указанным индексом.

В Bicep используйте функцию cidrSubnet .

Параметры

Параметр Обязательное поле Type Описание
сеть Да строка Строка, содержащая диапазон IP-адресов для преобразования в нотации CIDR.
newCIDR Да INT Целое число, представляющее CIDR, используемое для подсети. Это значение должно быть равно или больше значения CIDR в параметре network .
subnetIndex Да INT Индекс требуемого диапазона IP-адресов подсети для возврата.

Возвращаемое значение

Строка диапазона IP-адресов подсети с указанным индексом.

Примеры

В следующем примере вычисляется первые пять диапазонов подсети /24 из указанного /20:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v4subnets": {
      "type": "array",
      "copy": {
        "count": "[length(range(0, 5))]",
        "input": "[cidrSubnet('10.144.0.0/20', 24, range(0, 5)[copyIndex()])]"
      }
    }
  }
}

В предыдущем примере возвращается следующий массив:

[
  "10.144.0.0/24",
  "10.144.1.0/24",
  "10.144.2.0/24",
  "10.144.3.0/24",
  "10.144.4.0/24"
]

В следующем примере вычисляется первые пять диапазонов подсети /52 от указанного /48:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v6subnets": {
      "type": "array",
      "copy": {
        "count": "[length(range(0, 5))]",
        "input": "[cidrSubnet('fdad:3236:5555::/48', 52, range(0, 5)[copyIndex()])]"
      }
    }
  }
}

В предыдущем примере возвращается следующий массив:

[
  "fdad:3236:5555::/52"
  "fdad:3236:5555:1000::/52"
  "fdad:3236:5555:2000::/52"
  "fdad:3236:5555:3000::/52"
  "fdad:3236:5555:4000::/52"
]

cidrHost

cidrHost(network, hostIndex)

Вычисляет доступный IP-адрес узла с указанным индексом в указанном диапазоне IP-адресов в нотации CIDR. Например, в случае 192.168.1.0/24есть зарезервированные IP-адреса: 192.168.1.0 служит в качестве адреса идентификатора сети, а 192.168.1.255 функции — в качестве широковещательного адреса. Только IP-адреса, от 192.168.1.1 192.168.1.254 которых может быть назначено узлам, которые называются "пригодными для использования" IP-адресами. Таким образом, когда функция передается hostIndex, 0192.168.1.1 возвращается.

В Bicep используйте функцию cidrHost .

Параметры

Параметр Обязательное поле Type Описание
сеть Да строка Строка, содержащая ip-сеть для преобразования (должна быть правильной сетевой формат).
hostIndex Да INT Индекс возвращаемого IP-адреса узла.

Возвращаемое значение

Строка IP-адреса.

Примеры

В следующем примере вычисляется первые пять доступных IP-адресов узла из указанного /24:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v4hosts": {
      "type": "array",
      "copy": {
        "count": "[length(range(0, 5))]",
        "input": "[cidrHost('10.144.3.0/24', range(0, 5)[copyIndex()])]"
      }
    }
  }
}

В предыдущем примере возвращается следующий массив:

[
  "10.144.3.1"
  "10.144.3.2"
  "10.144.3.3"
  "10.144.3.4"
  "10.144.3.5"
]

В следующем примере вычисляется первые пять пригодных для использования IP-адресов узла из указанного /52:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v6hosts": {
      "type": "array",
      "copy": {
        "count": "[length(range(0, 5))]",
        "input": "[cidrHost('fdad:3236:5555:3000::/52', range(0, 5)[copyIndex()])]"
      }
    }
  }
}

В предыдущем примере возвращается следующий массив:

[
  "fdad:3236:5555:3000::1"
  "fdad:3236:5555:3000::2"
  "fdad:3236:5555:3000::3"
  "fdad:3236:5555:3000::4"
  "fdad:3236:5555:3000::5"
]

Следующие шаги