Azure ARM copyIndex () - PullRequest
       26

Azure ARM copyIndex ()

0 голосов
/ 23 мая 2018

Я пытаюсь создать шаблон 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 для деталей использования.Детали:

1 Ответ

0 голосов
/ 25 мая 2018

Ошибка говорит о том, что выражение языка, которое вы использовали в шаблоне, не может быть оценено.Другими словами, используемое вами выражение языка не соответствует правилам шаблона.И неправильное свойство выражения равно '0'.

Таким образом, вы должны проверить все свое выражение со свойством '0' по сравнению с документом, в котором сообщается об ошибке: https://aka.ms/arm-template-expressions.

update

Inкод шаблона, который вы публикуете, тип параметра «vmDataDiskSizesInGb» является строкой, а значение «defaultValue» равно 0, это неверно, вам следует указать «0».

Но я не уверен, что у вас естьЛюбая другая ошибка, поэтому я предлагаю вам проверить все ваше выражение со свойством '0' по сравнению с документом, в котором опубликована ошибка: https://aka.ms/arm-template-expressions.

...