Terraform变量:如何以更平坦的方式重新构造VNET/subnets/NSG的Terraform变量数据结构?

Terraform变量:如何以更平坦的方式重新构造VNET/subnets/NSG的Terraform变量数据结构?,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我正在使用的以下variables.vnet数据结构在即将使用count/for_和在上动态创建子网/vnet方面造成了太多的复杂性。我想要一个更简单的解决方案。我仍然希望能够在各自的VNET中对相关的子网进行分组,但也许可以去掉过多的映射列表 有人能帮我制定一个更好的方法来组织这个吗 变量“vnets”{ 默认值=[ { vnet_name=“第一个vnet” 地址空间=“10.250.0.0” 网络大小=16 子网=[ { name=“test1子网” 位掩码=24 netnum=1 服务

我正在使用的以下variables.vnet数据结构在即将使用count/for_和在上动态创建子网/vnet方面造成了太多的复杂性。我想要一个更简单的解决方案。我仍然希望能够在各自的VNET中对相关的子网进行分组,但也许可以去掉过多的映射列表

有人能帮我制定一个更好的方法来组织这个吗

变量“vnets”{
默认值=[
{
vnet_name=“第一个vnet”
地址空间=“10.250.0.0”
网络大小=16
子网=[
{
name=“test1子网”
位掩码=24
netnum=1
服务已启用=错误
网络安全组=“test1 nsg”
安全组规则=[
{
name=“test1 sg”
优先级=100
direction=“入站”
access=“允许”
协议=“tcp”
source\u port\u range=“*”
目的地\端口\范围=“*”
源地址前缀=“*”
目的地地址前缀=“172.16.2.0/24”
},
]
},
{
name=“test2子网”
位掩码=24
netnum=2
服务已启用=错误
网络安全组=“test2 nsg”
安全组规则=[
{
name=“test2 sg”
优先级=100
direction=“入站”
access=“允许”
协议=“tcp”
source\u port\u range=“*”
目的地\端口\范围=“*”
来源地址前缀=“172.16.0.0/24”
目的地地址前缀=“172.16.4.0/24”
},
]
},
{
name=“test3子网”
位掩码=24
netnum=3
服务已启用=真
网络安全组=“test3 nsg”
安全组规则=[
{
name=“test3 sg”
优先级=100
direction=“入站”
access=“允许”
协议=“tcp”
source\u port\u range=“*”
目的地\端口\范围=“*”
来源地址前缀=“172.16.2.0/24”
目的地地址前缀=“172.16.8.0/22”
},
]
}
]
},
{
vnet_name=“第二个vnet”
地址_space=“10.251.0.0”
网络大小=16
子网=[]
},
{
vnet_name=“第三个vnet”
地址_space=“10.252.0.0”
网络大小=16
子网=[]
}
]

}
variables.vnet数据结构良好,除了NSG规则外,没有必要将规则放在subnet属性中。您知道,一个子网只能连接一个NSG。因此,您只需设置哪个NSG将连接到子网。您可以单独为NSG和规则使用另一个变量

例如,对于子网,它可能像点击:

...
subnets = [
        {
          name                     = "test1-subnet"
          bitmask                  = 24
          netnum                   = 1
          service_endponts_enabled = false
          network_security_group   = "test1-nsg"
        },
        ...
      ]

有关于这个问题的最新消息吗?它解决了你的问题吗?对不起,现在是的。我希望得到更多的投入,但你的确实有帮助!标记为答案