本文介绍在 Azure 资源管理器模板(ARM 模板)中使用 CIDR 的功能。
parseCidr(network)
分析 CIDR 表示法中的 IP 地址范围,以获取地址范围的各种属性。
在 Bicep 中,使用 parseCidr 函数。
参数 | 必选 | 类型 | DESCRIPTION |
---|---|---|---|
网络 | 是的 | 字符串 | 包含要转换的 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(network, newCIDR, subnetIndex)
将 CIDR 表示法中的指定 IP 地址范围拆分为具有新 CIDR 值的子网,并返回具有指定索引的子网的 IP 地址范围。
在 Bicep 中,使用 cidrSubnet 函数。
参数 | 必选 | 类型 | DESCRIPTION |
---|---|---|---|
网络 | 是的 | 字符串 | 包含要以 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(network, hostIndex)
计算在 CIDR 表示法中指定 IP 地址范围上具有指定索引的主机的可用 IP 地址。 例如,在这种情况下 192.168.1.0/24
,存在保留 IP 地址: 192.168.1.0
用作网络标识符地址,同时 192.168.1.255
充当广播地址。 只能将范围从 IP 192.168.1.1
192.168.1.254
地址分配给主机,这些地址称为“可用”IP 地址。 因此,在传递函数时返回 hostIndex of0
192.168.1.1
。
在 Bicep 中,使用 cidrHost 函数。
参数 | 必选 | 类型 | DESCRIPTION |
---|---|---|---|
网络 | 是的 | 字符串 | 包含要转换的 IP 网络的字符串(必须是正确的网络格式)。 |
hostIndex | 是的 | 整数 (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 模板的结构和语法。