如何将私有CIDR范围拆分到三个az ?



给定1024个地址的10.163.64.0/22,我如何分割我的CIDR以容纳说三个团队跨三个az,分配128个地址/每个25 ?

我想我可以用https://www.terraform.io/language/functions/cidrsubnets做,但我不明白如何产生期望的结果。

我们可以使用示例的链接发布到得到你想要的地方。如果我们看一下:

> cidrsubnets("10.1.0.0/16", 4, 4, 8, 4)
[
"10.1.0.0/20",
"10.1.16.0/20",
"10.1.32.0/24",
"10.1.48.0/20",
]

第一部分当然是CIDR,第二部分在文档中列出为...:

cidrsubnets(前缀,newbits…)

这意味着子网划分将为您添加的newbits完成(从[1]):

剩下的参数,上面用newbits表示,每个参数指定一个返回地址范围的额外网络前缀位的数量。因此,返回值是一个列表,每一个元素newbits参数,每一个字符串包含一个地址范围CIDR标记。

这里的newbits是指从原始CIDR中借用的位数。因此,如果我们取10.1.0.0/16的CIDR,序列4, 4, 8, 4意味着将有4,4,8和4位被借用,这将创建子网:

"10.1.0.0/20", # 4 bits borrowed, was /16 now is /20
"10.1.16.0/20", # 4 bits borrowed, was /16 now is /20
"10.1.32.0/24", # 8 bits borrowed, was /16 now is /24
"10.1.48.0/20", # 4 bits borrowed, was /16 now is /20

在你的例子中,这将是:

cidrsubnets("10.163.64.0/22", 3, 3, 3)

通过使用terraform console,这将创建以下子网:

> cidrsubnets("10.163.64.0/22", 3, 3, 3)
tolist([
"10.163.64.0/25",
"10.163.64.128/25",
"10.163.65.0/25",
])

[1] https://www.terraform.io/language/functions/cidrsubnets