我可以使用New-AzureRmResourceGroupDeployment中的-TemplateUri参数指向非公共GIT资源(不是GitHub)吗?
还有其他方法可以将GIT用作ARM模板和链接模板的源(不使用azure存储或azure函数hack-如下所述)吗?
上述问题的其他信息:
我正在尝试使用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
同样,很明显-由于授权重定向。
我发现关于执行相同操作的不错的blog post from Tao Yang,但对于GitHub。他不得不使用Aruze函数作为获取模板json的代理对其进行破解。我想避免在我的解决方案中使用代理。
另一种方法是为此使用Azure Storage and SAS token-因此将模板从Git复制到Azure存储,然后使用SAS令牌通过URL从其访问。我也想避免使用Azure存储。
我尝试使用公共令牌通过git api访问template.json
,如one of the answers on SO中所述,因此模板的URL如下所示:
https://name:<token>@<org>.visualstudio.com/<proj>/_apis/git/repositories/..../items?path=.../template.json
但是我仍然收到302错误。
当然,如果我使teplateUri工作,那么下一步就是使它与链接模板一起工作,该模板也应该从Git中获取。