如何引用存储在 VSTS 或 Azure DevOps Git Repo 中的链接 ARM 模板?

How do I reference a linked ARM template that is stored in a VSTS or Azure DevOps Git Repo?

ARM 模板允许您使用 "templateLink" 属性 引用另一个 "linked" ARM 模板。我想在 Azure DevOps (VSTS) 中使用原始 git uri 来执行此操作。我可以使用 github 执行此操作,如下所示:

"resources": [ 
  { 
      "apiVersion": "2017-05-10", 
      "name": "linkedTemplate", 
      "type": "Microsoft.Resources/deployments", 
      "properties": { 
        "mode": "incremental", 
        "templateLink": {
          "uri": "https://raw.githubusercontent.com/lw/BaseARMTemplates/master/ARM.json"",
          "contentVersion": "1.0.0.0"
        }, 
      } 
  }
] 

如果您的项目是私有的,则不能。您可以将其上传到 public 存储帐户(或带有 SAS 令牌的私人存储帐户)并从那里引用它。

public 项目似乎也没有 API。

最佳做法是使用带有 sas 令牌的存储帐户来检索模板。这将允许您安全地引用您的模板 (https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-powershell-sas-token)。

如果您可以在 url 中通过身份验证(仅获取请求),则可以使用任何安全存储。或者您可以创建一个 azure 函数,将您的请求代理到私有存储并检索模板(显然是 hack)。

您可以创建一个管道,首先将 arm-templates 推送到私有存储帐户,然后创建一个步骤来创建 SAS-token,然后将 SAS-token 传递给 ARM-template。这是 MS 推荐的最佳实践,但感觉就像一个 hack,我不太喜欢它,所以我最终创建了单独的发布管道任务和模板,而不是使用嵌套模板。如果您需要将值从模板传递到另一个模板,您可以使用 ARM 模板输出来实现。