在 Terraform 中是否有编程方式将 CIDR 块减半?
Is there a programatic way to half a CIDR block in Terraform?
我有一个 CIDR 块,我想把它减半,这样我就有两个范围可以在我的 Terraform 项目中使用。
例如10.10.10.0/24
,其中包括 10.10.10.0 - 10.10.10.255 范围内的 IP
可以拆分为 10.10.10.0/25
& 10.10.10.128/25
我试过用 cidrsubnet function 看这个,但我真的不明白如何使用它从第一个范围到第二个范围。
如有任何帮助,我们将不胜感激!
正如您所指出的,这可以通过 cidrsubnet
来完成。
output "first_half" {
value = cidrsubnet("10.10.10.0/24", 1, 0) # 10.10.10.0/25
}
output "second_half" {
value = cidrsubnet("10.10.10.0/24", 1, 1) # 10.10.10.128/25
}
解释:
cidrsubnet
接受 3 个参数:cidrsubnet(prefix, newbits, netnum)
.
prefix
是您要减半的实际 CIDR 范围。
newbits
是您要扩展前缀的附加位数。例如,如果您有 /24
前缀,而您想要有 /25
前缀,则 newbits
是 25 和 24 之间的差值:25 - 24 = 1
netnum
是一个不超过newbits
位二进制数的整数。在我们的例子中,它可以是 0
或 1
。 0
将是 10.10.10.0/25
的范围,而 1
将代表后半部分,即 10.10.10.128/25
。
再给你举个例子,让它更容易理解,让我们 cut 10.10.10.0/24
if 4 ranges:
我们知道,我们需要 /26
个范围,因此 26 - 24 = 2
用于 newbits
。对于netnum
,我们可以有0、1、2、3,其二进制数为00
、01
、10
、11
。 =39=]
cidrsubnet("10.10.10.0/24", 2, 0) # 10.10.10.0/26
cidrsubnet("10.10.10.0/24", 2, 1) # 10.10.10.64/26
cidrsubnet("10.10.10.0/24", 2, 2) # 10.10.10.128/26
cidrsubnet("10.10.10.0/24", 2, 3) # 10.10.10.192/26
我有一个 CIDR 块,我想把它减半,这样我就有两个范围可以在我的 Terraform 项目中使用。
例如10.10.10.0/24
,其中包括 10.10.10.0 - 10.10.10.255 范围内的 IP
可以拆分为 10.10.10.0/25
& 10.10.10.128/25
我试过用 cidrsubnet function 看这个,但我真的不明白如何使用它从第一个范围到第二个范围。
如有任何帮助,我们将不胜感激!
正如您所指出的,这可以通过 cidrsubnet
来完成。
output "first_half" {
value = cidrsubnet("10.10.10.0/24", 1, 0) # 10.10.10.0/25
}
output "second_half" {
value = cidrsubnet("10.10.10.0/24", 1, 1) # 10.10.10.128/25
}
解释:
cidrsubnet
接受 3 个参数:cidrsubnet(prefix, newbits, netnum)
.
prefix
是您要减半的实际 CIDR 范围。newbits
是您要扩展前缀的附加位数。例如,如果您有/24
前缀,而您想要有/25
前缀,则newbits
是 25 和 24 之间的差值:25 - 24 = 1
netnum
是一个不超过newbits
位二进制数的整数。在我们的例子中,它可以是0
或1
。0
将是10.10.10.0/25
的范围,而1
将代表后半部分,即10.10.10.128/25
。
再给你举个例子,让它更容易理解,让我们 cut 10.10.10.0/24
if 4 ranges:
我们知道,我们需要 /26
个范围,因此 26 - 24 = 2
用于 newbits
。对于netnum
,我们可以有0、1、2、3,其二进制数为00
、01
、10
、11
。 =39=]
cidrsubnet("10.10.10.0/24", 2, 0) # 10.10.10.0/26
cidrsubnet("10.10.10.0/24", 2, 1) # 10.10.10.64/26
cidrsubnet("10.10.10.0/24", 2, 2) # 10.10.10.128/26
cidrsubnet("10.10.10.0/24", 2, 3) # 10.10.10.192/26