Я пытаюсь создать шаблон ARM, который позволит моей системе развертывать виртуальные машины, которым могут понадобиться или не потребоваться дополнительные диски с данными.Однако, когда я тестирую свой шаблон, я получаю сообщение об ошибке ниже.
Что странно, если параметр vmDataDisk имеет значение 0 или 1, все работает отлично.Если этот параметр имеет значение больше 1, я получаю ошибку ниже.
Например, прекрасно работает следующее: vmDataDisk = 1 и vmDataDiskSizesInGb = 30
Однако следующие значения выдают ошибку ниже: vmDataDisk = 3, vmDataDiskSizesInGb = 10,20,30
Элемент параметров - ARM json
"parameters": {
...
"vmDataDisks": {
"type": "int",
"defaultValue": 0,
"allowedValues": [
0,
1,
2,
3,
4,
5
],
"metadata": {
"description": "Select the number of data disks (in addition to OS disk) needed for this VM."
}
},
"vmDataDiskSizesInGb": {
"type": "string",
"defaultValue": 0,
"metadata": {
"description": "Enter string of comma separated values for the size of each data disk. For example, if the VmDataDisks parameter is set to '3', the VmDataDiskSizesInGb parameter might have a value of '10,25,50' and the template will deploy 3 data disks that are 10, 25 and 50 GB in size respectively."
}
}
}
Элемент переменных - ARM json
"variables": {
...
"diskSizes": "[split(parameters('vmDataDiskSizesInGb'), ',')]",
"copy": [
{
"name": "dataDisks",
"count": "[if(equals(parameters('vmDataDisks'),0), 1, parameters('vmDataDisks'))]",
"input": {
"name": "[concat(parameters('vmName'), '_DataDisk_', copyIndex('dataDisks'))]",
"lun": "[copyIndex('dataDisks')]",
"createOption": "Empty",
"diskSizeGB": "[if(equals(parameters('vmDataDisks'),0), 1, int(variables('diskSizes')[copyIndex()]))]",
"caching": "[if(startsWith(parameters('vmType'), 'SQL'), 'ReadOnly', 'None')]",
"managedDisk": {
"storageAccountType": "Premium_LRS"
}
}
}
]
}
Элемент ресурсов - ARM json
"resources": [
{
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"apiVersion": "2017-03-30",
"location": "[parameters('location')]",
"dependsOn": [],
"properties": {
"hardwareProfile": {},
"osProfile": {},
"storageProfile": {
"imageReference": {},
"osDisk": {},
"dataDisks": "[if(equals(parameters('vmDataDisks'),0), json('null'), variables('dataDisks'))]"
},
"networkProfile": {},
"diagnosticsProfile": {}
}
}
]
Test-AzureRmResourceGroupDeployment Error
Код: InvalidTemplateСообщение: Ошибка оценки языкового выражения шаблона развертывания: «Не удалось оценить свойство языкового выражения« 0 ».».Пожалуйста, смотрите https://aka.ms/arm-template-expressions для деталей использования.Детали: