ARM模板部署:重用参数文件中的任务参数

时间:2020-06-17 08:43:40

标签: azure azure-pipelines arm-template

我在发布管道中使用ARM模板部署任务。该任务具有一个名为Location的参数。

在我的parameters.json文件中,我还有一个名为Location的参数。我该如何更改此文件,以便它读取任务本身设置的值?

当前,从azure keyvault的变量组的变量中读取值。但是我认为从保管库中获取此位置参数是过头的。

See

2 个答案:

答案 0 :(得分:0)

位置*:

对于资源组部署范围:部署资源组的位置。如果预订中已存在资源组,则将忽略此值。 对于其他部署范围:用于存储部署元数据的位置。

https://github.com/microsoft/azure-pipelines-tasks/tree/master/Tasks/AzureResourceManagerTemplateDeploymentV3

鉴于此信息,您可以通过任务设置资源组的位置,并将其也用于所有资源。如果您希望资源与资源组位于不同的位置,则将无法利用task参数。

这是在ARM中的样子:

    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }

https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/resource-location?tabs=azure-powershell#use-location-parameter

答案 1 :(得分:0)

根据我的测试,我注意到xxx.parameters.json中的值无法读取管道中变量的值。

例如:

我在管道变量中设置了变量(test:abc)。然后在xxx.parameters.json文件中使用它。 创建资源组时,该资源中的变量不会被读取。

parameters.json示例:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
      "adminUsername": {
            "value": "test"
        },
       "location": {
           "value": "$(test)"

       }

    }
  }

enter image description here

从结果来看,似乎无法在json文件中自动使用位置值。

您可能需要使用tokenizer任务来手动覆盖json文件中的特定值。然后可以在资源组中使用该值。

或者您可以在ARM模板任务中直接使用Override template parameters

enter image description here

希望这会有所帮助。

相关问题