Comparteix a través de


Funciones de CIDR para plantillas de ARM

En este artículo, se describen las funciones para trabajar con CIDR en la plantilla de Azure Resource Manager (plantilla de ARM).

Sugerencia

Se recomienda Bicep porque ofrece las mismas funcionalidades que las plantillas de ARM, y la sintaxis es más fácil de usar. Para más información, consulte las funciones de cidr.

parseCidr

parseCidr(network)

Analiza un intervalo de direcciones IP en notación CIDR para obtener varias propiedades del intervalo de direcciones.

En Bicep, use la función parseCidr.

Parámetros

Parámetro Obligatorio Type Descripción
network string Cadena en notación CIDR que contiene un intervalo de direcciones IP que se va a convertir.

Valor devuelto

Objeto que contiene varias propiedades del intervalo de direcciones.

Ejemplos

En el ejemplo siguiente, se analiza una cadena 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')]"
    }
  }
}

El ejemplo anterior devuelve el objeto siguiente:

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

En el ejemplo siguiente, se analiza una cadena 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')]"
    }
  }
}

El ejemplo anterior devuelve el objeto siguiente:

{
  "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 el intervalo de direcciones IP especificado en notación CIDR en subredes con un nuevo valor CIDR y devuelve el intervalo de direcciones IP de la subred con el índice especificado.

En Bicep, use la función cidrSubnet.

Parámetros

Parámetro Obligatorio Type Descripción
network string Cadena que contiene un intervalo de direcciones IP que se va a convertir en notación CIDR.
newCIDR int Entero que representa el CIDR que se va a usar en la subred. Este valor debe ser igual o mayor que el valor CIDR del parámetro network.
subnetIndex int Índice del intervalo deseado de direcciones IP de subred que se va a devolver.

Valor devuelto

Cadena del intervalo de direcciones IP de la subred con el índice especificado.

Ejemplos

En el ejemplo siguiente, se calculan los cinco primeros intervalos de subred /24 de la subred especificada /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()])]"
      }
    }
  }
}

El ejemplo anterior devuelve la matriz siguiente:

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

En el ejemplo siguiente, se calculan los cinco primeros intervalos de subred /52 de la subred especificada /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()])]"
      }
    }
  }
}

El ejemplo anterior devuelve la matriz siguiente:

[
  "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 la dirección IP utilizable del host con el índice especificado en el intervalo de direcciones IP especificado en notación CIDR. Por ejemplo, en el caso de 192.168.1.0/24, hay direcciones IP reservadas: 192.168.1.0 actúa como dirección de identificador de red, mientras que 192.168.1.255 funciona como dirección de difusión. Solo se pueden asignar direcciones IP que van desde 192.168.1.1 a 192.168.1.254 a los hosts, que se conocen como direcciones IP "utilizables". Por tanto, cuando se pasa una función hostIndex de 0, se devuelve 192.168.1.1.

En Bicep, use la función cidrHost.

Parámetros

Parámetro Obligatorio Type Descripción
network string Cadena que contiene una red IP que se va a convertir (debe ser el formato de red correcto).
hostIndex int Índice de la dirección IP del host que se va a devolver.

Valor devuelto

Cadena de la dirección IP.

Ejemplos

En el ejemplo siguiente, se calculan las cinco primeras direcciones IP de host utilizables de la subred /24 especificada:

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

El ejemplo anterior devuelve la matriz siguiente:

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

En el ejemplo siguiente, se calculan las cinco primeras direcciones IP de host utilizables de la subred /52 especificada:

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

El ejemplo anterior devuelve la matriz siguiente:

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

Pasos siguientes