我在发布管道中使用ARM模板部署任务。该任务具有一个名为Location
的参数。
在我的parameters.json文件中,我还有一个名为Location
的参数。我该如何更改此文件,以便它读取任务本身设置的值?
当前,从azure keyvault的变量组的变量中读取值。但是我认为从保管库中获取此位置参数是过头的。
答案 0 :(得分:0)
位置*:
对于资源组部署范围:部署资源组的位置。如果预订中已存在资源组,则将忽略此值。 对于其他部署范围:用于存储部署元数据的位置。
鉴于此信息,您可以通过任务设置资源组的位置,并将其也用于所有资源。如果您希望资源与资源组位于不同的位置,则将无法利用task参数。
这是在ARM中的样子:
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
答案 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)"
}
}
}
从结果来看,似乎无法在json文件中自动使用位置值。
您可能需要使用tokenizer
任务来手动覆盖json文件中的特定值。然后可以在资源组中使用该值。
或者您可以在ARM模板任务中直接使用Override template parameters
。
希望这会有所帮助。