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

问题描述 投票:0回答:1

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

在我的parameters.json文件中,我还有一个参数叫做 Location. 我怎样才能改变这个文件,使其读取任务本身设置的值?

目前,该值是从来自 azure keyvault 的变量组的变量中读取的。但我认为让这个位置参数来自金库是矫枉过正。

See

azure azure-pipelines arm-template
1个回答
0
投票

Location*。

用于资源组的部署范围 用于部署资源组的位置 如果资源组已经存在于订阅中,那么这个值将被忽略。 对于其他部署范围:用于存储部署元数据的位置。用于存储部署元数据的位置。

https:/github.commicrosoftazure-pipelines-taskstreemasterTasksAzureResourceManagerTemplateDeploymentV3。

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

这是在ARM中的样子。

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

https:/docs.microsoft.comen-usazureazure-resource-managertemplatesresource-location?tabs=azure-powershell#use-location-parameter。


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文件中。

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

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

enter image description here

希望这能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.