Могу ли я использовать параметр -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
не имеет связанных / вложенных шаблонов, все работает правильно. Когда я добавляю связанный шаблон, он начинает отказывать из-за неизвестного расположения файла связанного шаблона. Это совершенно ясно - потому что связанный шаблон находится на моем локальном компьютере (или на компьютере агента) и не виден из Resource Manager.
Я решил использовать параметр -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
Опять же, довольно очевидно - из-за перенаправления авторизации.
Я нашел хорошее сообщение в блоге от Тао Яна о том же, но для GitHub. Ему пришлось взломать его, используя функции Aruze в качестве прокси для получения шаблона json. Я хотел бы избежать прокси в моем решении.
Другой подход заключается в использовании хранилища Azure и токена SAS для этого. То есть копирование шаблонов из Git в хранилище Azure и последующий доступ к нему по URL-адресу с использованием токена SAS. Я бы тоже хотел не использовать хранилище Azure.
Я пытался использовать публичный токен для доступа к template.json
через git api, как упоминалось в одном из ответов на SO , поэтому URL к шаблону выглядит так:
https://name:<token>@<org>.visualstudio.com/<proj>/_apis/git/repositories/..../items?path=.../template.json
Однако я все еще получаю ошибку 302.
Конечно, если я получу работу teplateUri, то следующим шагом будет заставить его работать со связанным шаблоном, который также должен быть получен из Git.