次の方法で共有


ARM テンプレート用の CIDR 関数

この記事では、Azure Resource Manager テンプレート (ARM テンプレート) で CIDR を操作するための関数について説明します。

ヒント

ARM テンプレートと同じ機能を備え、構文も使いやすいため、Bicep をお勧めします。 詳細については、cidr 関数に関するページをご覧ください。

parseCidr

parseCidr(network)

CIDR 表記の IP アドレス範囲を解析して、アドレス範囲のさまざまなプロパティを取得します。

Bicep では、parseCidr 関数を使用します。

パラメーター

パラメーター 必須 タイプ 説明
ネットワーク はい string 変換する IP アドレス範囲を含む CIDR 表記の文字列。

戻り値

アドレス範囲のさまざまなプロパティを含むオブジェクト。

次の例では、IPv4 の CIDR 文字列を解析します。

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

次の例では、IPv6 の CIDR 文字列を解析します。

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

CIDR 表記で指定した IP アドレス範囲を、新しい CIDR 値を持つサブネットに分割し、指定したインデックスを持つサブネットの IP アドレス範囲を返します。

Bicep では、cidrSubnet 関数を使用します。

パラメーター

パラメーター 必須 タイプ 説明
ネットワーク はい string 変換する CIDR 表記の IP アドレス範囲を含む文字列。
newCIDR はい INT サブネットに使用する CIDR を表す整数。 この値は、network パラメーターの CIDR 値以上である必要があります。
subnetIndex はい INT 取得する目的のサブネット IP アドレス範囲のインデックス。

戻り値

指定したインデックスを持つサブネットの IP アドレス範囲の文字列。

次の例では、指定した /20 から最初の 5 つの /24 サブネット範囲を計算します。

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

次の例では、指定した /48 から最初の 5 つの /52 サブネット範囲を計算します。

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

指定された CIDR 表記の IP アドレス範囲で、指定されたインデックスを持つホストの使用可能な IP アドレスを計算します。 たとえば、192.168.1.0/24 の場合、予約済みの IP アドレスがあります。192.168.1.0 はネットワーク識別子アドレスとして機能するのに対して、192.168.1.255 はブロードキャスト アドレスとして機能します。 192.168.1.1 から 192.168.1.254 までの範囲の IP アドレスのみをホストに割り当てることができます。これは "使用可能な" IP アドレスと呼ばれます。 そのため、関数に hostIndex として 0 が渡されると、192.168.1.1 が返されます。

Bicep では、cidrHost 関数を使用します。

パラメーター

パラメーター 必須 タイプ 説明
ネットワーク はい string 変換する IP ネットワークを含む文字列 (正しいネットワーク形式である必要があります)。
hostIndex はい INT 返すホスト IP アドレスのインデックス。

戻り値

IP アドレスの文字列。

次の例では、指定した /24 から最初の 5 つの使用可能なホスト IP アドレスを計算します。

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

次の例では、指定した /52 から最初の 5 つの使用可能なホスト IP アドレスを計算します。

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

次のステップ