Compartilhar via


Funções CIDR para modelos do ARM

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

Dica

Recomendamos o Bicep porque ele oferece as mesmas funcionalidades que os modelos do ARM e a sintaxe é mais fácil de usar. Para saber mais, consulte as funções de 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, use a função parseCidr.

Parâmetros

Parâmetro Obrigatório Type Descrição
network Sim string Cadeia de caracteres na notação CIDR que contém um intervalo de endereços IP a ser convertido.

Valor retornado

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

Exemplos

O exemplo a seguir analisa uma cadeia de caracteres 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 retorna 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 a seguir analisa uma cadeia de caracteres 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 retorna 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 retorna o intervalo de endereços IP da sub-rede com o índice especificado.

No Bicep, use a função cidrSubnet.

Parâmetros

Parâmetro Obrigatório Type Descrição
network Sim string Cadeia de caracteres que contém um intervalo de endereços IP a ser convertido na notação CIDR.
newCIDR Sim INT Um inteiro que representa o CIDR a ser usado para sub-rede. Esse valor deve ser igual ou maior que o valor CIDR no parâmetro network.
subnetIndex Sim INT Índice do intervalo de endereços IP de sub-rede desejado a ser retornado.

Valor retornado

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

Exemplos

O exemplo a seguir calcula os primeiros cinco intervalos de sub-rede /24 do /20 especificado:

{
  "$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 retorna 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 a seguir calcula os primeiros cinco intervalos de sub-rede /52 do /48 especificado:

{
  "$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 retorna 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 host 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, há 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. Somente endereços IP que variam de 192.168.1.1 a 192.168.1.254 podem ser atribuídos a hosts, que são chamados de endereços IP "utilizáveis". Portanto, quando a função passa um hostIndex de 0, 192.168.1.1 é retornado.

No Bicep, use a função cidrHost.

Parâmetros

Parâmetro Obrigatório Type Descrição
network Sim string Cadeia de caracteres que contém uma rede IP a ser convertida (deve ser o formato de rede correto).
hostIndex Sim INT O índice do endereço IP do host a ser retornado.

Valor retornado

Uma cadeia de caracteres do endereço IP.

Exemplos

O exemplo a seguir calcula os cinco primeiros endereços IP de host utilizáveis 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 retorna 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 a seguir calcula os cinco primeiros endereços IP de host utilizáveis 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 retorna 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"
]

Próximas etapas