【问题标题】:How to create and attach a new disk to an existing Windows Virtual Machine using ARM template?如何使用 ARM 模板创建新磁盘并将其附加到现有 Windows 虚拟机?
【发布时间】:2021-05-05 08:02:04
【问题描述】:

我已经在我的资源组中创建了 VM 现在我想将一个新的数据磁盘添加到我现有的 VM 中,所以有人可以为我提供任何 GitHub URL 模板链接,我可以参考这个链接来满足这个要求。链接下面,我已经去了。

https://docs.microsoft.com/en-us/azure/virtual-machines/using-managed-disks-template-deployments

【问题讨论】:

    标签: azure-resource-manager azure-virtual-machine


    【解决方案1】:

    如果你想创建一个新的数据盘并附加到一个新创建的由 ARM 模板创建的 VM,请尝试以下模板:

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "vmName": {
                "type": "String"
            },
            "diskName": {
                "type": "String"
            }
        },
        "resources": [{
                "type": "Microsoft.Compute/virtualMachines",
                "apiVersion": "2019-07-01",
                "name": "[parameters('vmName')]",
                "location": "[resourceGroup().location]",
                "properties": {
    
                    "storageProfile": {
                        "dataDisks": [{
                                "lun": 0,
                                "name": "[parameters('diskName')]",
                                "createOption": "attach",
                                "managedDisk": {
                                    "id": "[resourceId('Microsoft.Compute/disks/', parameters('diskName'))]"
                                }
                            }
                        ]
                    }
                },
                "dependsOn": ["[resourceId('Microsoft.Compute/disks/', parameters('diskName'))]"]
            }, {
                "type": "Microsoft.Compute/disks",
                "apiVersion": "2018-06-01",
                "name": "[parameters('diskName')]",
                "location": "[resourceGroup().location]",
                "sku": {
                    "name": "Standard_LRS"
                },
                "properties": {
                    "creationData": {
                        "createOption": "Empty"
                    },
                    "diskSizeGB": 1023
                }
            }
    
        ]
    }
    

    我使用 PowerShell 进行部署。结果:

    更新

    如果你的虚拟机已经有1个数据盘,你想保留它并追加一个新的数据盘,你需要在dataDisks中指定这2个磁盘,为了快速测试,下面的模板是基于上一个:此虚拟机已附加一个磁盘:test6-disk 并附加一个新的并保留两个:

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "vmName": {
                "type": "String"
            },
            "diskName": {
                "type": "String"
            }
        },
        "resources": [{
                "type": "Microsoft.Compute/virtualMachines",
                "apiVersion": "2019-07-01",
                "name": "[parameters('vmName')]",
                "location": "[resourceGroup().location]",
                "properties": {
    
                    "storageProfile": {
                        "dataDisks": [{
                                "lun": 0,
                                "name": "test6-disk",
                                "createOption": "attach",
                                "managedDisk": {
                                    "id": "[resourceId('Microsoft.Compute/disks/','test6-disk')]"
                                }
                            }, {
                                "lun": 1,
                                "name": "[parameters('diskName')]",
                                "createOption": "attach",
                                "managedDisk": {
                                    "id": "[resourceId('Microsoft.Compute/disks/', parameters('diskName'))]"
                                }
                            }
                        ]
                    }
                },
                "dependsOn": ["[resourceId('Microsoft.Compute/disks/', parameters('diskName'))]"]
            }, {
                "type": "Microsoft.Compute/disks",
                "apiVersion": "2018-06-01",
                "name": "[parameters('diskName')]",
                "location": "[resourceGroup().location]",
                "sku": {
                    "name": "Standard_LRS"
                },
                "properties": {
                    "creationData": {
                        "createOption": "Empty"
                    },
                    "diskSizeGB": 1023
                }
            }
    
        ]
    }
    

    结果:

    【讨论】:

    • 感谢您的回复,我正在尝试从自定义部署 azure 门户运行并收到以下错误“不允许更改属性 'dataDisk.managedDisk.id'。”
    • @DnyaneshSurya,这个问题是由于 vm 已经附加了一个数据磁盘并占用了 lun 0 solt。请将 resources => properties=>storageProfile=>dataDisks=>lun 从 0 更改为 1 并重试(如果您附加了 2 个数据磁盘,请将 lun 更改为 2)以了解有关 lun 的更多信息,请参阅:docs.microsoft.com/en-us/azure/virtual-machines/windows/…
    • 感谢 cmets 是的,我更改了那个 LUN,它对我有用,但问题是每当我尝试添加新的 DataDisk Previuos 时,一个自动删除的(分离)所以你能帮我解决这个问题吗.提前致谢。
    • @DnyaneshSurya,很高兴知道它很有帮助。是的,我完全可以理解,一旦你使用这种方式追加一个新磁盘,Azure 会按照你定义的模板更新你的虚拟机,在我的演示模板中,只有 1 个磁盘,你以前的磁盘将被删除,因为你没有在 dataDisks 中定义它。所以如果你想追加一个新磁盘并保留前一个磁盘,你还应该在 resources => properties=>storageProfile=>dataDisks 中定义前一个磁盘。
    • 再次感谢您的回复,能否请您将包含以前磁盘详细信息的 ARM 模板发给我。
    猜你喜欢
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2017-01-15
    • 2019-01-15
    相关资源
    最近更新 更多