将现有托管数据磁盘附加到现有azure VM

时间:2017-10-18 13:34:39

标签: azure azure-resource-manager azure-powershell

我们需要创建一个托管数据磁盘并将其附加到现有VM。 我们使用ARM模板创建托管磁盘,但我不确定在同一个ARM中我们如何将它附加到VM?

我正在使用Add-AzureRmVMDataDisk将托管数据磁盘附加到vm,但它期望VHDURI参数,不确定我们将如何为托管数据磁盘获取该参数。

注意:我们有限制我们无法使用New-AzureRmDisk创建数据磁盘,因为我们的计算模块不是最新版本,因此它不支持此cmdlet并升级此模块导致如此我们已经在其他功能中使用的其他cmdlet的许多问题。

2 个答案:

答案 0 :(得分:0)

要将现有托管磁盘添加到ARM中的虚拟机,您可以使用虚拟机资源的storageProfile对象下的属性dataDisks。

dataDisks属性接受一个对象数组,每个数据磁盘一个对象要连接到VM。下面的示例数组将向虚拟机添加3个数据磁盘。

[
    {
      "lun": 0,
      "name": "[concat(parameters('virtualMachineName'), '-datadisk1')]",
      "createOption": "attach",
      "managedDisk": {
        "id": "[resourceId('Microsoft.Compute/disks/', concat(parameters('virtualdisk1name')]"
      }
    },
    {
      "lun": 1,
      "name": "[concat(parameters('virtualMachineName'), '-datadisk2')]",
      "createOption": "attach",
      "managedDisk": {
        "id": "[resourceId('Microsoft.Compute/disks/', '-datadisk2'))]"
      }
    },
    {
      "lun": 2,
      "name": "[concat(parameters('virtualMachineName'), '-datadisk3')]",
      "createOption": "attach",
      "managedDisk": {
        "id": "[resourceId('Microsoft.Compute/disks/' ,'-datadisk3'))]"
      }
    }
]

您可以看到虚拟机模板here的完整示例,其中显示了storageProfile对象的dataDisks属性。

答案 1 :(得分:0)

在尝试在Azure模板中附加托管数据磁盘时,请确保记下了三件事:

  1. API版本-创建VM资源时,我使用了较旧的API版本,我将其更改为“ 2018-06-01”,因为旧版本不支持在虚拟机中添加托管磁盘。 ARM模板中的VM资源。
  2. 非托管OS磁盘-我的OS磁盘是非托管磁盘,我删除了所有属性,同时仅保留createOption属性“ createOption”:“ FromImage”,以确保它创建了托管磁盘磁盘,而不将存储帐户用于非托管磁盘。
  3. 数据磁盘名称-我从数据磁盘中输入了一个名称,我从模板中删除了该属性。

VHD URI是用于创建新数据磁盘的URI。 您可以使用此link通过PowerShell创建托管磁盘。

您还可以在与VM相同的Azure模板中创建托管磁盘,并将该磁盘作为数据磁盘附加到VM模板,如下所示:

{
  "type": "Microsoft.Compute/disks",
  "apiVersion": "2017-03-30",
  "name": "YourDataDiskName",
  "location": "[resourceGroup().location]",
  "properties": {
    "creationData": {
      "createOption": "Import",
      "sourceUri": "https://yourstorageaccount.blob.core.windows.net/yourcontainer/VHDName.vhd"
    }
  }
},
{
      "apiVersion": "2018-06-01",
      "type": "Microsoft.Compute/virtualMachines",
      "name": "MyWindowsVM",
      "location": "[resourceGroup().location]",
      "tags": {
        "displayName": "VirtualMachine"
      },
      "properties": {
        "hardwareProfile": {
          "vmSize": "Standard_A2"
        },
        "osProfile": {
          "computerName": "MyWindowsVM",
          "adminUsername": "someusername",
          "adminPassword": "somepassword"
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "MicrosoftWindowsServer",
            "offer": "WindowsServer",
            "sku": "2012-R2-Datacenter",
            "version": "latest"
          },
          "osDisk": {            
            "createOption": "FromImage"
          },
          "dataDisks": [
            {
              "lun": 0,
              "createOption": "Attach",
              "managedDisk": {
                "id": "[resourceId('Microsoft.Compute/disks', 'YourDataDiskName')]"
              }
            }
          ]
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces', 'myVMNic')]"
            }
          ]
        },
        "diagnosticsProfile": {
          "bootDiagnostics": {
            "enabled": true,
            "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', 'diagstorageaccountname'), '2016-01-01').primaryEndpoints.blob]"
          }
        }
      },
      "resources": [
      ]
    }

从模板中,您可以看到我使用指定的VHD创建了资源数据磁盘,并将其附加到storageprofile.datadisk部分中​​的VM。

我希望这会有所帮助!