Funções CIDR para modelos do ARM

Este artigo descreve as funções para trabalhar com CIDR no modelo de Resource Manager do Azure (modelo arm).

Dica

Recomendamos o Bicep porque oferece as mesmas capacidades que os modelos do ARM e a sintaxe é mais fácil de utilizar. Para saber mais, veja funções cidr .

parseCidr

parseCidr(network)

Analisa um intervalo de endereços IP na notação CIDR para obter várias propriedades do intervalo de endereços.

No Bicep, utilize a função parseCidr .

Parâmetros

Parâmetro Necessário Tipo Description
network Yes string Cadeia na notação CIDR que contém um intervalo de endereços IP a converter.

Valor devolvido

Um objeto que contém várias propriedades do intervalo de endereços.

Exemplos

O exemplo seguinte analisa uma cadeia 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')]"
    }
  }
}

O exemplo anterior devolve o seguinte objeto:

{
  "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
}

O exemplo seguinte analisa uma cadeia 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')]"
    }
  }
}

O exemplo anterior devolve o seguinte objeto:

{
  "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)

Divide o intervalo de endereços IP especificado na notação CIDR em sub-redes com um novo valor CIDR e devolve o intervalo de endereços IP da sub-rede com o índice especificado.

No Bicep, utilize a função cidrSubnet .

Parâmetros

Parâmetro Necessário Tipo Description
network Yes string Cadeia que contém um intervalo de endereços IP para converter na notação CIDR.
newCIDR Yes int Um número inteiro que representa o CIDR a ser utilizado na sub-rede. Este valor deve ser igual ou maior do que o valor CIDR no network parâmetro .
subnetIndex Yes int Índice do intervalo de endereços IP da sub-rede pretendido a devolver.

Valor devolvido

Uma cadeia do intervalo de endereços IP da sub-rede com o índice especificado.

Exemplos

O exemplo seguinte calcula os primeiros cinco intervalos de sub-rede /24 dos /20 especificados:

{
  "$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()])]"
      }
    }
  }
}

O exemplo anterior devolve a seguinte matriz:

[
  "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"
]

O exemplo seguinte calcula os primeiros cinco intervalos de sub-rede /52 dos /48 especificados:

{
  "$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()])]"
      }
    }
  }
}

O exemplo anterior devolve a seguinte matriz:

[
  "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)

Calcula o endereço IP utilizável do anfitrião com o índice especificado no intervalo de endereços IP especificado na notação CIDR. Por exemplo, no caso de 192.168.1.0/24, existem endereços IP reservados: 192.168.1.0 serve como o endereço do identificador de rede, enquanto 192.168.1.255 funciona como o endereço de difusão. Apenas os endereços IP que vão de 192.168.1.1 a 192.168.1.254 podem ser atribuídos a anfitriões, que são referidos como endereços IP "utilizáveis". Assim, quando a função é transmitida um hostIndex de 0, 192.168.1.1 é devolvido.

No Bicep, utilize a função cidrHost .

Parâmetros

Parâmetro Necessário Tipo Description
network Yes string Cadeia que contém uma rede IP para converter (tem de estar correta no formato de rede).
hostIndex Yes int O índice do endereço IP do anfitrião a devolver.

Valor devolvido

Uma cadeia do endereço IP.

Exemplos

O exemplo seguinte calcula os primeiros cinco endereços IP do anfitrião utilizáveis a partir do /24 especificado:

{
  "$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()])]"
      }
    }
  }
}

O exemplo anterior devolve a seguinte matriz:

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

O exemplo seguinte calcula os primeiros cinco endereços IP de anfitrião utilizáveis a partir do /52 especificado:

{
  "$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()])]"
      }
    }
  }
}

O exemplo anterior devolve a seguinte matriz:

[
  "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"
]

Passos seguintes