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

时间:2018-12-18 21:53:40

标签: git azure-devops azure-resource-manager

ARM模板允许您使用“ templateLink”属性引用另一个“链接的” 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"
        }, 
      } 
  }
] 

3 个答案:

答案 0 :(得分:2)

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

如果您可以在url中传递auth(仅获取请求),则可以使用任何安全存储。或者,您可以创建一个Azure函数,将您的请求代理到私有存储并检索模板(显然是黑客)。

答案 1 :(得分:1)

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

似乎也没有公共项目的API。

答案 2 :(得分:1)

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