dataDisk.image Azure 资源模板中的参数

dataDisk.image parameter in Azure Resource Template

是否有任何 Azure 资源模板文档?我正在尝试使用资源模板重新创建 VM,而我唯一缺少的是从映像创建数据磁盘,方法与创建 OS 磁盘的方式相同。我编辑了 JSON 模板:

          "dataDisks": [
        {
          "lun": 0,
          "name": "[concat(parameters('virtualMachines_testVM_name'),'-disk-1')]",
          "createOption": "FromImage",
          "vhd": {
            "uri": "[concat('https', '://', parameters('storageAccounts_rmtemplatetest6221copy_name'), '.blob.core.windows.net', concat('/vhds/', parameters('virtualMachines_testVM_name'),'-disk-1-201649102835.vhd'))]"
          },
          "caching": "ReadWrite"
        }
      ]

但是我在部署模板时在 Azure 中遇到以下错误

Required parameter 'dataDisk.image' is missing

到目前为止,我重新创建数据磁盘的唯一方法是从 JSON 模板中删除上述代码,然后在没有数据磁盘的情况下创建机器后使用 Powershell,但我想自动化仅使用资源模板进行部署。

在 Azure 快速入门模板中,您可以找到 JSON 使用自定义映像创建 VM 的模板,包括数据磁盘:

https://github.com/Azure/azure-quickstart-templates/tree/master/101-vm-user-image-data-disks

只有一个非常重要的注意事项 - 目标存储帐户应该与您的 VHD 所在的帐户相同

JSON 架构没有固定文档。最好的来源是检查架构本身,所以:

更新

当您基于自定义映像(包括数据磁盘)创建 VM 时,您必须在自定义数据磁盘所在的同一存储帐户中创建整个 VM。截至今天 (2016-05-10),没有选项指示 ARM 跨存储帐户复制 VHD。

如果您想使用数据磁盘从自定义映像创建 VM,这就是全部。 如果您只想使用新的空数据磁盘创建 VM,则可以使用以下快速入门模板:

https://github.com/Azure/azure-quickstart-templates/tree/master/101-vm-multiple-data-disk

您只需定义所需的数据磁盘大小及其存储位置。

您遇到的问题是您将模板配置为复制图像,但没有指定图像。

您需要将 createOption 设置为 fromImage,并指定一个图像

"dataDisks": [
 {
  "name": "[concat(variables('vmName'),'-dataDisk')]",
  "lun": 0,
  "createOption": "FromImage",            
  "image": {
    "uri": "[variables('dataDiskUrl')]"
    },
  "vhd": {
    "uri": "[variables('dataDiskVhdName')]"
    }
}
],

或者,如果你只是想使用现有的磁盘,你可以使用attach,(你也可以在这个配置中使用empty,它会创建一个空磁盘)

"dataDisks": [
{
    "name": "[concat(variables('vmName'),'-dataDisk')]",
    "lun": 0,
    "createOption": "attach",          
    "vhd": {
    "uri": "[variables('dataDiskVhdName')]"
   }
}
],