将Terraform中的cidr范围拆分为两个服务?



继续阅读如何将私有CIDR范围拆分到三个az ?

假设我有1024个地址CIDR范围10.162.192.0/22,我需要在两个服务中拆分为32个地址(5位)。

我知道我可以在terraform console中运行:

cidrsubnets("10.162.192.0/22", 5, 5, 5, 5, 5, 5)
tolist([
"10.162.192.0/27",
"10.162.192.32/27",
"10.162.192.64/27",
"10.162.192.96/27",
"10.162.192.128/27",
"10.162.192.160/27",
])

但是我不明白的是如何分割命令。例如:

internal = cidrsubnets("10.162.192.0/22", 5, 5, 5) # correct
public = cidrsubnets("10.162.192.64/27", 5, 5, 5) # wrong output

公共变量是完全错误的1地址:

> cidrsubnets("10.162.192.64/27", 5, 5, 5)
tolist([
"10.162.192.64/32",
"10.162.192.65/32",
"10.162.192.66/32",
])

我想继续从"10.162.192.64/27":

([
"10.162.192.96/27",
"10.162.192.128/27",
"10.162.192.160/27",
])

我错过了什么?

cidrsubnets("10.162.192.64/27", 5, 5, 5)的输出完全正常。27 + 5 = 32导致单个IP地址。如果您想生成32个cidr,您可以运行一次cidrsubnets命令,然后拆分结果:

locals {
all_cidrs = cidrsubnets("10.162.192.64/27", [for i in range(6): 5]...)
internal = [for idx, cidr in local.all_cidrs: cidr if idx < 3]
public = [for idx, cidr in local.all_cidrs: cidr if idx >= 3]
}

最新更新