在 Arm 模板中使用 If/Else
Using If/Else in Arm Templates
我有一个 ARM 可以自动构建多 VM 环境。我希望请用户根据环境的大小来定义SMALL/MEDIUM/LARGE。然后,该模板将根据环境大小的值决定 VM 的类型。例如,如果 size = 'SMALL',vmSize = 'Standard_E2s_v3',else if size = 'MEDIUM',则 vmSize = 'Standard_E8s_v3',else if size = 'LARGE'然后 vmSize = 'Standard_E16s_v3'。我该怎么做?
ARM 模板甚至支持 if/else 语句吗?
你应该看看 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 (if/else)
来做同样的事情
"vmSize": "[if(equals(parameters('size'), 'small'), 'Standard_E2s_v3', '<probably a nested if in your case>')]"
我更喜欢第一个选项。
您当然可以在该语言中嵌套 if() 语句(请参阅:https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions#logical-functions)但下面的方法更容易阅读 IMO...
- 使用您的 T-Shirt 设置创建一个变量(如果需要,您可以在此处放置多个 属性)
"vmSize": {
"small": "Standard_E2s_v3",
"medium": "Standard_E8s_v3",
"large": "Standard_E16s_v3"
}
- 然后通过以下方式设置尺寸:
"vmSize": "[variables('vmSize')[parameters('tshirtSize')]]"
我有一个 ARM 可以自动构建多 VM 环境。我希望请用户根据环境的大小来定义SMALL/MEDIUM/LARGE。然后,该模板将根据环境大小的值决定 VM 的类型。例如,如果 size = 'SMALL',vmSize = 'Standard_E2s_v3',else if size = 'MEDIUM',则 vmSize = 'Standard_E8s_v3',else if size = 'LARGE'然后 vmSize = 'Standard_E16s_v3'。我该怎么做?
ARM 模板甚至支持 if/else 语句吗?
你应该看看 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 (if/else)
来做同样的事情"vmSize": "[if(equals(parameters('size'), 'small'), 'Standard_E2s_v3', '<probably a nested if in your case>')]"
我更喜欢第一个选项。
您当然可以在该语言中嵌套 if() 语句(请参阅:https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions#logical-functions)但下面的方法更容易阅读 IMO...
- 使用您的 T-Shirt 设置创建一个变量(如果需要,您可以在此处放置多个 属性)
"vmSize": {
"small": "Standard_E2s_v3",
"medium": "Standard_E8s_v3",
"large": "Standard_E16s_v3"
}
- 然后通过以下方式设置尺寸:
"vmSize": "[variables('vmSize')[parameters('tshirtSize')]]"