Я пытаюсь создать шаблон условного ресурса. Окружающая среда devel не такая мудрая, как производственная среда, и мне это удалось в большинстве случаев. Однако, похоже, я не могу правильно использовать вложенные ресурсы.Шаблон ARM условные вложенные ресурсы без связывания шаблона
Вот отрывок из моего шаблона ARM:
"webApp-resources": "[variables(concat('webApp-', parameters('env'), '-resources'))]",
"webApp-dev-resources": [],
"webApp-prod-resources": [
{
"name": "staging",
"type": "Microsoft.Web/sites/slots",
"location": "[resourceGroup().location]",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('webApp-name'))]"
]
}
],
Идея проста, переменная ресурсы создаётся с помощью параметра env
. Параметр env
может быть либо dev
, либо prod
, и, хотя это работает, я получаю следующую ошибку при попытке развернуть этот шаблон.
{
"name": "[variables('webApp-name')]",
"type": "Microsoft.Web/sites",
...
"resources": "[variables('webApp-resources')]" // <- culprit!
},
Содержание запроса является недействительным и не может быть десериализаций: «Ошибка преобразования значения„[переменные („WebAPP-ресурсы“)]“к типу» Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.Schema .TemplateResource []. Path 'properties.template.resources [1] .resources', строка 195, позиция 64. '
Я также попытался переместить ресурс в переменную и ссылаюсь на переменную аналогичным условным образом, очень похоже на то, как мы будем вставлять вложенные шаблоны, но без связывания шаблонов.
resources: [
"[variables('webApp-resource')]" // <- this doesn't work!
]
Это привело к аналогичной ошибке, но с другой ошибкой, если я правильно напомнил.
Из этого я пришел к выводу, что синтаксис шаблонов ARM не просто находит и заменяет, что я считаю плохим, потому что это затрудняет рассуждение о том, что работает, а что нет. Потому что, если бы это было так, это привело бы к действительному шаблону, который будет работать. Что я проверил, вставив правильное значение в раздел ресурсов.
У кого-нибудь были подобные проблемы, как вы справились с проблемой?
Фактически, я даже не уверен, отвечаю ли я на правильный вопрос, я не совсем понимаю вашу проблему, не можете ли вы разработать немного? – 4c74356b41
Слоты для развертывания поддерживаются только стандартными и расширенными планами обслуживания приложений, для среды разработки не нужны слоты для развертывания, поэтому я решил не использовать их. Однако теперь у меня есть шаблон развертывания, который должен меняться в зависимости от того, в какую среду он развертывается. Это мне удалось сделать хорошо, но я не смог добавить слот развертывания «этап», чтобы этот слот существовал только в среде * prod *. * dev * среда использует базовый уровень, но * prod * использует стандартный уровень. Ошибки в моем вопросе изображают различные (IMAO) простые попытки сделать это. –
Вы пытаетесь использовать 'variable' вместо' resource'? Я уверен, что вы не можете этого сделать, но вы можете создать слоты условно – 4c74356b41