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

时间:2016-05-10 11:40:43

标签: powershell azure azure-resource-manager

是否有Azure资源模板文档?我正在尝试使用资源模板重新创建VM,我唯一缺少的是从映像创建数据磁盘,就像创建操作系统磁盘一样。我编辑了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中遇到以下错误

  

缺少必需参数'dataDisk.image'

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

2 个答案:

答案 0 :(得分:1)

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

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

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

JSON Schema上没有常规文档。最好的来源是检查Schema本身,所以:

<强>更新

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

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

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

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

答案 1 :(得分:0)

您遇到的问题是您已将模板配置为制作图像副本,并且未指定图像。

您需要将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')]"
   }
}
],