如何在Azure ARM模板参数中表示继承/覆盖?

时间:2018-01-17 23:57:17

标签: azure azure-resource-manager arm-template

在Azure ARM模板参数中表示继承/覆盖的好方法是什么?是否有类似的东西:

UnitedStates.json:

{
  ...
  "parameters": {
    "keyVaultName": { "value": "keyvaultus" }
  }
}

WestUS.json:

{
  ...
  "base": "UnitedStates.json"
  "parameters": {
    "keyVaultName": { "value": "@@inherit" }
    "webAppName": { "value": "westus-demoapp" }
}

2 个答案:

答案 0 :(得分:1)

  

在Azure ARM模板参数中表示继承/覆盖的好方法是什么?

我不知道为什么需要在Azure ARM模板参数中继承/覆盖。根据我的经验,如果您想根据不同的条件部署azure资源,现在azure资源模板支持conditionally部署资源。您可以在arm模板中实现。

另一种方法是使用自定义脚本来控制逻辑。例如,您可以创建多个参数json文件。然后,您可以使用逻辑代码来控制应该使用哪个参数json文件。

Powershell演示代码:

if($localtion -eq "WestUS")
{
    $deployParameterFile = D:\Azure\Templates\WestUS.json
}
if($localtion -eq "UnitedStates")
{
    $deployParameterFile = D:\Azure\Templates\UnitedStates.json
}
New-AzureRmResourceGroupDeployment -ResourceGroupName "xxxxx" -TemplateFile "D:\Azure\Templates\deploy.json" -TemplateParameterFile $deployParameterFile 

答案 1 :(得分:1)

不,没有办法实现原生。您可以通过解析基本json参数并将其编辑到嵌套参数文件中来编写powershell \无论通过哪种脚本实现该目的。不能想到任何其他方式这样做。