我有一个可以自动构建多VM环境的ARM。我希望要求用户根据环境的大小来定义“小/中/大”。然后,模板将根据环境大小的值确定VM的类型。例如,如果size ='SMALL',则vmSize ='Standard_E2s_v3',否则,如果size ='MEDIUM',则vmSize ='Standard_E8s_v3',否则,如果size ='LARGE',则vmSize ='Standard_E16s_v3'。我该怎么办?
ARM模板是否甚至支持if / else语句?
答案 0 :(得分:2)
您应该查看variables。
代码可能是这样的:
"parameters": {
"size": {
"type": "string",
"allowedValues": [
"small",
"medium"
]
}
},
"variables": {
"vmsizes": {
"small": {
"vmSize": "Standard_E2s_v3"
},
"medium": {
"vmSize": "Standard_E8s_v3"
}
}
},
可以这样使用:
"[variables('vmsizes')[parameters('size')].vmSize]"
您还可以使用单个变量和logical expression(如果/其他)来做同样的事情
"vmSize": "[if(equals(parameters('size'), 'small'), 'Standard_E2s_v3', '<probably a nested if in your case>')]"
我希望第一种选择。
答案 1 :(得分:2)
您当然可以用该语言嵌套if()语句(请参阅:https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions#logical-functions),但是下面的方法更容易阅读IMO ...
"vmSize": {
"small": "Standard_E2s_v3",
"medium": "Standard_E8s_v3",
"large": "Standard_E16s_v3"
}
"vmSize": "[variables('vmSize')[parameters('tshirtSize')]]"