![](/img/trans.png)
[英]"DiskImageNotReady" error when creating VM in Azure using ARM template and JSON
[英]How to select VM T-shirt size in Azure ARM Template
我有一個VM部署模板,其中將VM大小定義為T恤大小,例如small = Standard_DS2_v2,medium = Standard_E4s_v3,large = Standard_E4s_v3。
我已經將它們定義為數組,如下面的變量部分所示
"parameters": {
"vmSpecs": {
"type": "array"
}
},
"variables": {
"vmSizeType" :[{
"small" : "Standard_DS2_v2",
"medium": "Standard_E4s_v3",
"large" : "Standard_E32s_v3"
}]
},
"resources": [
{
"name": "[parameters('vmSpecs')[copyIndex()].vmName]",
"type": "Microsoft.Compute/virtualMachines",
"location": "[resourceGroup().location]",
"apiVersion": "2018-06-01",
"dependsOn": [
"VMNIC0Copy",
"[variables('storageAccountName')]"
],
"copy": {
"name": "VMCopy",
"count": "[length(parameters('vmSpecs'))]"
},
"properties": {
"licenseType": "[parameters('vmSpecs')[copyIndex()].licenseType]",
"hardwareProfile": {
"vmSize": "[parameters('vmSpecs')variables('vmSizeType')[copyIndex()].vmSize[1]]"
}
}
在參數文件中
"vmSpecs": {
"value": [
{ //vm01
"vmName": "test",
"dnsDomain": "domain.com",
"vmSize": "medium"
}
}
我的問題是我如何輸入vmSize並根據定義的內容選擇大小
就像您通常(使用點符號)訪問幾乎所有語言的對象屬性一樣:
"vmSizeType" :{ << should be an object, you only make it harder making it an array
"small" : "Standard_DS2_v2",
"medium": "Standard_E4s_v3",
"large" : "Standard_E32s_v3"
}
...
"vmSize": "[variables('vmSizeType')[parameters('vmSpecs')[copyIndex()].vmSize]]"
^^ tshirt variable ^ ^^ input parameter ^^ iteration ^^ property
^ get property defined dynamically, have to use [] syntax instead of dot notation
for static\hardcoded property name you can use dot notation:
variables('vmSizeType').small
如果您需要將tshirt變量設置為數組(沒有理由),則也必須考慮到這一點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.