来自非公共GIT的带有ARM链接模板的Azure资源组部署

时间:2018-09-05 16:03:00

标签: git azure azure-resource-manager azure-template azure-devops-rest-api

我可以使用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中获取。

0 个答案:

没有答案