#azure #arm-template #infrastructure-as-code #azure-bicep
Вопрос:
У меня есть базовый модуль BICEP, который развертывает виртуальную сеть с подсетями и NSGS. 1 из подсетей предназначен для брандмауэра azure. Подсеть брандмауэра azure не может быть подключена к NSG, поэтому я поставил условие не развертывать nsg в подсети брандмауэра azure, но я не могу заставить это работать. Когда он запускается, он возвращает ошибку:
{
"code": "MissingJsonReferenceId",
"message": "Value for reference id is missing. Path properties.subnets[6].properties.networkSecurityGroup."
},
Условие таково
id: VNetSettings.subnets[j].unique == false ? json('{"id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat('nsg-snet-${vNetName}-${VNetSettings.subnets[j].name}'))]"') : json('null')
Условие оценивает VnetSettings.subnets.unique == false
, и если false
затем будет развернута nsg, но если VNetSettings.subnets.unique
== true
, то это должно быть json('null')
и не развертывать NSG.
false
подсети развертывают и подключают NSG, но true
при этом возникает ошибка:
"code": "MissingJsonReferenceId",
"message": "Value for reference id is missing. Path properties.subnets[6].properties.networkSecurityGroup."
},
Пожалуйста, кто-нибудь, помогите 🙁
Спасибо
Ответ №1:
Теперь у меня это работает. Хитрость в том, чтобы поставить условие на properties
объекте, а не внутри networkSecurityGroup
объекта