Развертывание группы ресурсов Azure с использованием связанного шаблона ARM из закрытого GIT

Могу ли я использовать параметр -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.


person Michał Szkudlarek    schedule 05.09.2018    source источник
comment
какой вопрос? если git api разрешает такие ссылки, он должен работать. если нет - не должно. любая форма аутентификации, кроме токена sas, не поддерживается. он должен работать, если он встроен в URL-адрес, хотя   -  person 4c74356b41    schedule 05.09.2018
comment
Привет, вопрос выделен жирным шрифтом.   -  person Michał Szkudlarek    schedule 05.09.2018
comment
Я умею читать, но это не вопрос или, скорее, не имеет ничего общего с лазурью. я уже опубликовал ответ   -  person 4c74356b41    schedule 05.09.2018
comment
Можете ли вы предоставить подробные журналы для этой задачи?   -  person Eddie Chen - MSFT    schedule 07.09.2018
comment
Под вопросом добавлена ​​ошибка @ EddieChen-MSFT: Не удалось загрузить файл. URL: "". Ошибка: 302: найдено   -  person Michał Szkudlarek    schedule 07.09.2018
comment
Не могли бы вы запрограммировать файл через PowerShell перед вызовом New-AzureRmResourceGroupDeployment?   -  person starian chen-MSFT    schedule 09.09.2018
comment
@ starianchen-MSFT, я мог бы, но тогда связанный шаблон работать не будет. Он будет вести себя точно так же, как и локальный файл.   -  person Michał Szkudlarek    schedule 10.09.2018