ARM 範本的 CIDR 函式
本文說明用來在 Azure Resource Manager 範本 (ARM 範本) 中處理 CIDR 的函式。
parseCidr
parseCidr(network)
剖析 CIDR 表示法中的 IP 位址範圍,以取得位址範圍的各種屬性。
在 Bicep 中,使用 parseCidr 函式。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
network | Yes | string | CIDR 表示法中的字串,其中包含要轉換的 IP 位址範圍。 |
傳回值
包含位址範圍各種屬性的物件。
範例
下列範例會剖析 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 函式。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
network | Yes | string | CIDR 表示法的字串,其中包含要轉換的 IP 位址範圍。 |
newCIDR | Yes | int | 代表要用於子網路之 CIDR 的整數。 此值應該等於或大於 network 參數中的 CIDR 值。 |
subnetIndex | Yes | int | 要傳回之所需子網路 IP 位址範圍的索引。 |
傳回值
有指定索引之子網路 IP 位址範圍的字串。
範例
下列範例會從指定的 /20 計算前五個 /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 計算前五個 /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)
計算主機的可用 IP 位址,並在 CIDR 表示法中指定的 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 位址。 因此,當函式傳遞 0
的 hostIndex 時,會傳回 192.168.1.1
。
在 Bicep 中,使用 cidrHost 函式。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
network | Yes | string | 包含要轉換的 IP 網路(必須是正確的網路格式)的字串。 |
hostIndex | Yes | int | 要傳回之主機 IP 位址的索引。 |
傳回值
IP 位址的字串。
範例
下列範例會從指定的 /24 計算前五個可使用的主機 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 計算前五個可使用的主機 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 範本的結構和語法。