首页 > 解决方案 > Azure 资源组部署与来自非公共 GIT 的 ARM 链接模板

问题描述

我可以使用来自 New-AzureRmResourceGroupDeployment 的 -TemplateUri 参数指向非公共 GIT 资源(不是 GitHub)吗?

有没有其他方法可以使用 GIT 作为 ARM 模板和链接模板的源(不使用 azure storage 或 azure function hack - 如下所述)?

上述问题的附加信息:

我正在尝试使用 VSTS 构建管道配置一些资源,但是为了这个问题,我将其限制为 powershell New-AzureRmResourceGroupDeployment 命令。

工作场景(无链接模板)

New-AzureRmResourceGroupDeployment -ResourceGroupName RG -TemplateFile path_to_local_template/template.json

如果template.json没有链接/嵌套模板,则一切正常。当我添加链接模板时,由于链接模板文件的位置未知,它开始失败。这是非常清楚的 - 因为链接模板在我的本地计算机(或代理计算机)上,并且在资源管理器中不可见。

我决定使用 -templateUri 参数(template.json 在 Git repo 中)

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 存储和 SAS 令牌- 因此将模板从 Git 复制到 azure 存储,然后使用 SAS 令牌通过 URL 访问它。我也想避免使用天蓝色存储。

我尝试使用公共令牌template.json通过 git api 进行访问,如SO 上的答案之一所述,因此模板的 URL 如下所示:

https://name:<token>@<org>.visualstudio.com/<proj>/_apis/git/repositories/..../items?path=.../template.json

但是我仍然收到 302 错误。

当然,如果我让 teplateUri 正常工作,那么下一步就是让它与链接模板一起工作,该模板也应该从 Git 中获取。

标签: gitazureazure-resource-managerazure-templateazure-devops-rest-api

解决方案


推荐阅读