我在发布管道中使用ARM模板部署任务。该任务有一个名为 Location
.
在我的parameters.json文件中,我还有一个参数叫做 Location
. 我怎样才能改变这个文件,使其读取任务本身设置的值?
目前,该值是从来自 azure keyvault 的变量组的变量中读取的。但我认为让这个位置参数来自金库是矫枉过正。
Location*。
用于资源组的部署范围 用于部署资源组的位置 如果资源组已经存在于订阅中,那么这个值将被忽略。 对于其他部署范围:用于存储部署元数据的位置。用于存储部署元数据的位置。
根据这些信息,您可以通过任务设置资源组的位置,并将其用于所有资源。如果您希望资源的位置与资源组的位置不同,您将无法利用任务参数。
这是在ARM中的样子。
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
根据我的测试,我注意到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文件中。
您可能需要在json文件中使用 tokenizer
任务来手动覆盖json文件中的特定值。然后该值就可以在资源组中使用。
或者您可以直接使用 Override template parameters
中的ARM模板任务。
希望这能帮到你。