0

我需要将旧的经典 VM 迁移到新的(仍然)经典 VM 才能使用:

  • 新型 VM(Standard_A 到 Standard_DS_V2)
  • 高级磁盘

我制作了一个脚本,它是:

  • 停止现有 VM
  • 删除现有虚拟机
  • 将旧磁盘(操作系统 + 数据)复制到高级存储帐户
  • 注册新磁盘

然后我有另一个脚本来基于 Json 信息创建新的 VM 这个脚本已经开发了一段时间,用于基于 Json 信息和现有的 Azure 磁盘模板创建 VM。

我已经对其进行了调整,以根据磁盘副本创建一个新 VM。

除了管理员用户/密码之外,一切都运行良好。每次创建新 VM 时,我都无法使用旧管理员用户(最初用于创建 VM 的用户)访问它。为了访问虚拟机,我需要使用 Azure 门户重置密码,然后才能访问虚拟机。

问题是我想要:

  • 在我的脚本中执行此步骤
  • 根本不必这样做(我们使用的是操作系统磁盘/数据磁盘的副本,因此不需要它)

有人可以解释我如何管理这个吗?几天/几周以来,我一直在使用它,但我找不到正确的方法。

我的脚本为创建 VM(ubuntu VM)所做的操作:

- Set-AzureSubscription -CurrentStorageAccount $VM.StorageAccount -SubscriptionId $VM.SubscriptionId
- $GlobalOSDiskName = (Get-AzureDisk | Where-Object { $_.OS -iin "Linux","Windows" } | Select DiskName).DiskName
- $VM = Get-Content $json_file -Raw | ConvertFrom-Json
- $VMOSDisk = $VM.OSDisk
- $vmObj = New-Object -TypeName Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVM
- $vmObj = New-AzureVMConfig -Name $VM.Name -InstanceSize $VM.InstanceSize -DiskName $VMOSDisk.DiskName
- $vmObj = Set-AzureOSDisk -VM $vmObj 
- $VMDataDisks = $VM.DataDisks
- foreach ($VMDataDisk in $VMDataDisks) {
    $vmObj = Add-AzureDataDisk -Import -DiskName $VMDataDisk.DiskName -LUN $VMDataDisk.Lun -HostCaching $VMDataDisk.HostCaching -VM $vmObj
    }
- $password = Read-Host -Prompt "Enter password for admin account '$username'" -AsSecureString 
- $vmObj = Set-AzureVMAccessExtension -VM $vmObj -UserName $username -Password $password
    # This is the last test I've made for this but it's not better...
    # Adding informations for Subnet, StaticIP, AvailabilitySet, EndPoint, ACL etc...
- New-AzureVM -VNetName $VM.Vnet -ServiceName $VM.ServiceName -VM $vmObj -WaitForBoot
    # Creation of the VM based on the object $vmObj

==> 虚拟机创建正确但无法访问

此外,当我使用 Azure 门户重置密码时,如果在旧 VM 上没有提示我使用 sudo 命令,则会提示我填写密码。

这没什么大不了的,但我想知道为什么以及如何启用/禁用它。

编辑:我已经测试了这个文档中写的建议,它似乎有效。

该方法包括:

  • 使用命令Export-AzureVM将源 VM 的配置导出到 xml 文件中
  • 编辑导出的 xml 文件以匹配所需的设置
  • 使用命令Import-AzureVM基于此创建一个新的 VM 对象

结果似乎工作正常:

  • 使用所有参数很好地创建了 VM
  • 管理员密码保持不变,无需在任何地方设置

对此的担忧是:

  • 导出的 xml 中没有对管理员凭据的引用
  • 所以新的 vm 对象中没有对管理员凭据的引用
  • 创建的对象与我以我的方式创建的对象完全相同

有人可以解释一下两种解决方案之间的区别吗?

谢谢你的帮助

4

1 回答 1

0

最后经过几次测试,我仍然没有任何确认......

在某些情况下,管理员帐户密码需要重置,在其他情况下不需要...

如果有人有答案,那将非常有帮助...

于 2017-02-23T15:59:26.673 回答