Fn::Cidr 是随机的吗?
Is Fn::Cidr random?
如果使用相同的输入调用,Fn::Cidr 是否总是输出相同的值?
我想从同一个 Vpc ip 块获取三个不同子网的 3 个子地址,如果我如下使用它们,我能否保证我会为这 3 个子网获取不同的地址:
我正在为每个参数更改 Fn::Select 的第一个参数。
"SubBlock1" : { "Fn::Select" : [ 0, { "Fn::Cidr" : ["10.0.1.0/16", 3, 24]} ] }
"SubBlock2" : { "Fn::Select" : [ 1, { "Fn::Cidr" : ["10.0.1.0/16", 3, 24]} ] }
"SubBlock3" : { "Fn::Select" : [ 2, { "Fn::Cidr" : ["10.0.1.0/16", 3, 24]} ] }
为了对此进行测试,我使用此模板创建了一个堆栈:
AWSTemplateFormatVersion: 2010-09-09
Resources:
Bucket:
Type: AWS::S3::Bucket
Outputs:
Block1:
Value: !Select
- 0
- Fn::Cidr:
- 10.0.0.0/16
- 3
- 8
Block2:
Value: !Select
- 1
- Fn::Cidr:
- 10.0.0.0/16
- 3
- 8
Block3:
Value: !Select
- 2
- Fn::Cidr:
- 10.0.0.0/16
- 3
- 8
(包含桶只是因为至少需要一个资源。)
输出为:
- 块 1:
10.1.0.0/24
- 区块 2:
10.1.1.0/24
- 区块 3:
10.1.2.0/24
所以,是的,它每次都会输出相同的块,因为它只是按要求划分给定的 CIDR。
一些注意事项:
- 我必须提供
cidrBits=8
才能生成 /24
区块
10.0.1.0/16
在您的示例中不是有效的 /16
块,因此我将其更改为 10.1.0.0/16
如果使用相同的输入调用,Fn::Cidr 是否总是输出相同的值? 我想从同一个 Vpc ip 块获取三个不同子网的 3 个子地址,如果我如下使用它们,我能否保证我会为这 3 个子网获取不同的地址:
我正在为每个参数更改 Fn::Select 的第一个参数。
"SubBlock1" : { "Fn::Select" : [ 0, { "Fn::Cidr" : ["10.0.1.0/16", 3, 24]} ] }
"SubBlock2" : { "Fn::Select" : [ 1, { "Fn::Cidr" : ["10.0.1.0/16", 3, 24]} ] }
"SubBlock3" : { "Fn::Select" : [ 2, { "Fn::Cidr" : ["10.0.1.0/16", 3, 24]} ] }
为了对此进行测试,我使用此模板创建了一个堆栈:
AWSTemplateFormatVersion: 2010-09-09
Resources:
Bucket:
Type: AWS::S3::Bucket
Outputs:
Block1:
Value: !Select
- 0
- Fn::Cidr:
- 10.0.0.0/16
- 3
- 8
Block2:
Value: !Select
- 1
- Fn::Cidr:
- 10.0.0.0/16
- 3
- 8
Block3:
Value: !Select
- 2
- Fn::Cidr:
- 10.0.0.0/16
- 3
- 8
(包含桶只是因为至少需要一个资源。)
输出为:
- 块 1:
10.1.0.0/24
- 区块 2:
10.1.1.0/24
- 区块 3:
10.1.2.0/24
所以,是的,它每次都会输出相同的块,因为它只是按要求划分给定的 CIDR。
一些注意事项:
- 我必须提供
cidrBits=8
才能生成/24
区块 10.0.1.0/16
在您的示例中不是有效的/16
块,因此我将其更改为10.1.0.0/16