对于ARM模板,我似乎找不到任何方法使用参数值作为参数文件中另一个参数的一部分:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"someCustomParam": {
"value": "desired value"
},
"tags": {
"value": {
"tag1": "[parameters('someCustomParam')]",
"tag2": "some tag value"
}
},
}
}
注意我要如何使用前一个参数的值作为另一个参数的值。
“ tag1”的值只是字符串,并且不会从parameter()函数中替换该值。我已经使用Test-AzResourceGroupDeployment
PowerShell cmdlet对此进行了测试。
有什么办法可以做到这一点?
答案 0 :(得分:0)
您需要使用variables。
在变量中,可以使用“ [parameters('parameterName')]”。
您可以使用与参数类似的方式使用变量:“ [variables('variableName')]”
更新:
以下是示例:
"parameters": {
"someCustomParam": {
"type": "string"
}
},
"variables": {
"tags": {
"tag1": "[parameters('someCustomParam')]",
"tag2": "some tag value"
}
}
然后您可以在模板的资源中使用变量。
答案 1 :(得分:0)
Test-AzResourceGroupDeployment
之前,您可以使用$ParameterObject = Get-Content ./ParameterFileName.json
更新所需的值,例如:
$ParameterObject.parameters.tags.value.tag1 =
#要分配的值
$parameterObject
传递到-TemplateParameterObject
的{{1}}参数------或------
Test-AzResourceGroupDeployment
将$parameterObject
转换为JSON并另存为temp.json并将temp.json传递给ConvertTo-Json
[参考如下] -TemplateParameterFile
$TempParameterFile = ( $ParametersObject | ConvertTo-Json -Depth 20 ) -replace "\\u0027", "'" -replace "\\u0026", "&" | Out-File $tmp -Force
使用$TempParameterFile
答案 2 :(得分:0)
您可以像通常引用参数时所做的那样执行此操作,示例如下:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"paramOne": {
"value": "hello"
},
"paramTwo": {
"value": "[concat(parameters('paramOne'), '-', 'world)]"
}
}
}
'paramTwo' 的输出值为 'hello-world'。
希望这可以帮助任何想要在参数文件中的参数中引用参数的人。