Могу ли я использовать параметр -TemplateUri из New-AzureRmResourceGroupDeployment, указывающий на непубличный ресурс GIT (не GitHub)?
Есть ли другой способ использовать GIT в качестве источника для шаблонов ARM и связанных шаблонов (без использования хранилища Azure или взлома функций Azure, как описано ниже)?
Дополнительная информация по вышеуказанным вопросам:
Я пытаюсь предоставить некоторые ресурсы с помощью конвейера сборки VSTS, однако ради этого вопроса я ограничусь командой PowerShell New-AzureRmResourceGroupDeployment.
Рабочий сценарий (без связанного шаблона)
New-AzureRmResourceGroupDeployment -ResourceGroupName RG -TemplateFile path_to_local_template/template.json
Если template.json
не имеет связанных / вложенных шаблонов, все работает правильно. Когда я добавляю связанный шаблон, он начинает давать сбой из-за неизвестного местоположения файла связанного шаблона. Это совершенно ясно, потому что связанный шаблон находится на моем локальном компьютере (или на машине агента) и не отображается в диспетчере ресурсов.
Я решил использовать параметр -templateUri (template.json находится в репозитории Git)
New-AzureRmResourceGroupDeployment -ResourceGroupName RG -TemplateUri https://<org>.visualstudio.com/<proj>/_apis/git/repositories/..../items?path=.../template.json
Git Api ссылка на ресурс отлично работает через браузер, если я авторизован (значит, это правильно).
При выполнении вышеуказанной команды я получаю (XXX точно такой же, как предоставленный templateUri):
##[error]Failed to download the file. URL: XXX . Error: 302: Found
Опять же, вроде очевидное - из-за перенаправления авторизации.
Я нашел хороший сообщение в блоге Tao Yang о том, как сделать то же самое, но для GitHub. Ему пришлось взломать его, используя функции Aruze в качестве прокси для получения шаблона json. Я бы хотел избежать использования прокси в своем решении.
Другой подход - использовать Azure Storage и Для этого используется токен SAS. Так что копирование шаблонов из Git в хранилище Azure и последующий доступ к нему через URL-адрес с помощью токена SAS. Я бы тоже хотел избежать использования лазурного хранилища.
Я попытался использовать общедоступный токен для доступа к template.json
через git api, как указано в one ответов на SO, поэтому URL-адрес шаблона выглядит так:
https://name:<token>@<org>.visualstudio.com/<proj>/_apis/git/repositories/..../items?path=.../template.json
Однако я все еще получаю ошибку 302.
Конечно, если я получу teplateUri работать, то следующим шагом будет заставить его работать со связанным шаблоном, который также должен быть получен из Git.