更新Azure VM ScaleSet的VHD

时间:2017-09-01 12:46:23

标签: powershell azure azure-storage-blobs autoscaling

我使用Azure VM的vhd在Azure上创建了一个VMSS。

如何将VMSS的源vhd更改为新的vhd?

获取以下错误: enter image description here

2 个答案:

答案 0 :(得分:2)

我们可以使用Update-AzureRmVmssUpdate-AzureRmVmssInstance来升级VMSS实例。

如果我们想使用自定义映像升级Azure VMSS实例,我们应该确保通过自定义映像创建此VMSS。

如果我们从Azure marketplace创建VMSS,我们就无法使用自定义映像升级Azure VMSS实例。

这是我的测试:

1.我按自定义映像创建VMSS,并使用VMSS template创建它(托管磁盘)。

enter image description here

2,创建另一个虚拟机映像,并使用此脚本获取$ vmss,并使用Powershell升级VMSS实例:

$rgname = "vmsss"
$vmssname = "jasonvmss"
$instanceid = "1"
$newimagereference = "/subscriptions/5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx/resourceGroups/jasonwin/providers/Microsoft.Compute/images/myImage"
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssname
$vmss.virtualMachineProfile.storageProfile.imageReference.id = $newImageReference
Update-AzureRmVmss -ResourceGroupName $rgname -Name $vmssname -VirtualMachineScaleSet $vmss
Update-AzureRmVmssInstance -ResourceGroupName $rgname -VMScaleSetName $vmssname -InstanceId $instanceId

以下是我的截图:

enter image description here

我们也可以找到VMSS实例的状态:

enter image description here

因此,作为一种变通方法,我们可以使用模板或PowerShell创建Azure VMSS with custom image ,然后使用此脚本升级Azure VMSS实例。

注意:在我的测试中,我使用模板创建VMSS是托管磁盘,所以我们应该使用$vmss.virtualMachineProfile.storageProfile.imageReference.id

如果您创建的VMSS是非托管磁盘,我们应该使用此$vmss.virtualMachineProfile.storageProfile.osDisk.image.uri= $newURI

以下是有关升级VMSS实例的官方文章,请参阅it

答案 1 :(得分:1)

根据FAQ on VMSS和VM,一般来说,VMSS运行在VHD之上。因此,如果您有一个新的VHD,那么您可以简单地删除旧的VMSS,并创建一个新的VMSS。

这是我如何描绘你的情况。

  1. 运行VHD1顶部的VMSS
  2. 现在,我有VHD2。
  3. 使用VHD2作为基础创建新的VMSS。
  4. 删除在VHD1上运行的VMSS
  5. 如果不再需要VHD1,也要删除VHD1,或者将其推送到某个备份以供以后重用。
  6. 问题本身似乎很简单,除非你要求其他东西,我自欺欺人:)

    如果问题是别的问题,那么需要更多地解释这个问题,其他更多经验的天蓝色的人可以帮助你。