我有一个自动构建多VM环境的ARM。我希望请用户根据环境的大小来定义中小/大型。然后,模板将根据环境大小的值来决定VM的类型。例如,如果size = 'SMALL',vmSize = 'Standard_E2s_v3',如果size = 'MEDIUM',则vmSize = 'Standard_E8s_v3',否则如果size =‘vmSize’,则vmSize= 'Standard_E16s_v3‘。我怎么能这么做?
ARM模板甚至支持if/else语句吗?
发布于 2020-11-04 21:41:09
当然,您可以在语言中嵌套if()语句(参见:https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions#logical-functions),但是下面的方法更容易阅读.
"vmSize": {
"small": "Standard_E2s_v3",
"medium": "Standard_E8s_v3",
"large": "Standard_E16s_v3"
}"vmSize": "[variables('vmSize')[parameters('tshirtSize')]]"
发布于 2020-11-04 21:38:52
你应该调查一下变量。
代码可以是这样的:
"parameters": {
"size": {
"type": "string",
"allowedValues": [
"small",
"medium"
]
}
},
"variables": {
"vmsizes": {
"small": {
"vmSize": "Standard_E2s_v3"
},
"medium": {
"vmSize": "Standard_E8s_v3"
}
}
},可以这样使用:
"[variables('vmsizes')[parameters('size')].vmSize]"您也可以使用一个变量和一个逻辑表达式 (if/else)来做同样的事情。
"vmSize": "[if(equals(parameters('size'), 'small'), 'Standard_E2s_v3', '<probably a nested if in your case>')]"我更喜欢第一种选择。
https://stackoverflow.com/questions/64685838
复制相似问题