ARM テンプレート用の CIDR 関数
この記事では、Azure Resource Manager テンプレート (ARM テンプレート) で 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"
]
次のステップ
- ARM テンプレートのセクションの説明については、「ARM テンプレートの構造と構文について」を参照してください。