В моем шаблоне ARM у меня есть переменная под названием «подсети», которая может быть трех типов.
Если это тип А, то я хочу 4 подсети с заданными именами и адресами; если это typeB, то 2 подсети и так далее.
"variables": {
"subnets" : {
"typeA" : {
"network" : "3.0/24",
"directory" : "5.0/24",
"documents" : "8.0/24",
"security" : "10.0/24",
},
"typeB" : {
"directory" : "10.0/24",
"database" : "11.0/24",
},
"dmz" : {
"directory" : "12.0/24",
"database" : "15.0/24", }
}
}
В шаблоне ARM у меня есть параметр, который говорит мне, какой тип использовать. Итак, у меня есть сегмент, подобный приведенному ниже, который использует condition
для сопоставления с subnetType
, являющимся typeA
, и соответственно создает виртуальную сеть.
{
"type": "Microsoft.Network/virtualNetworks",
"condition" : "[contains(parameters('subnetType'), 'typeA')]",
"apiVersion": "2018-10-01",
...
"copy" : [ {
"name" : "subnets",
"count" : "[length(array(variables('subnets').typeA))]",
"input": {
"name": "...",
"properties": {
"addressPrefix": "..."
}
}
} ]
}
}
Как вы можете видеть выше, у меня есть блок copy
в этом ресурсе VirtualNetwork, и я хочу создать различные подсети для сети typeA
. Я полагаю, что я мог бы преобразовать subnets.typeA
в массив и получить длину его для цикла ( это идея, я не знаю, работает ли она на самом деле ), но мне не ясно, как извлечь имя подсети и адрес префикса из моей переменной выше.