复制 OS 磁盘后如何在 Azure ASM 中保留/设置默认管理员密码

Posted

技术标签:

【中文标题】复制 OS 磁盘后如何在 Azure ASM 中保留/设置默认管理员密码【英文标题】:How to keep / set the default admin password in Azure ASM after a copy of the OS Disk 【发布时间】:2017-06-18 08:42:42 【问题描述】:

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

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

我制作了一个脚本:

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

然后我有另一个脚本来创建基于 Json 信息的新 VM 该脚本是不久前开发的,用于根据 Json 信息和现有 Azure 磁盘模板创建 VM。

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

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

问题是我想要:

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

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

我的脚本为创建虚拟机(ubuntu 虚拟机)所做的操作:

- 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 命令,则会提示我填写密码。

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

编辑:我已经测试了this doc 中写的建议,它似乎有效。

此方法包括:

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

结果似乎工作正常:

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

对此的担忧是:

导出的 xml 中没有对管理员凭据的引用 因此新的 vm 对象中没有对管理员凭据的引用 创建的对象与我创建的对象完全相同

谁能解释一下这两种解决方案的区别?

感谢您的帮助

【问题讨论】:

建议您在创建虚拟机成功后重置您的管理员用户密码。 据我所知,目前经典 VM 不支持 S 系列 VM。如果要使用 DsV2 系列 VM,则需要使用 ARM 模式 VM。 感谢沃尔特的回答。但为了纠正您,DsV2 系列在 ASM 模式下工作正常......对于您的第一个答案,我想知道如何重置管理员密码作为第二个选项,但我不知道如何。在门户中,此管理员重置密码选项需要大约 20 到 30 分钟,并且有时会失败......所以如果可能的话,我更愿意以另一种方式进行。 对不起我的错误。我们可以在新的 Azure 门户上创建 DsV2 经典 VM。 【参考方案1】:

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

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

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

【讨论】:

以上是关于复制 OS 磁盘后如何在 Azure ASM 中保留/设置默认管理员密码的主要内容,如果未能解决你的问题,请参考以下文章

如何从用于 vm 的 Azure Python SDK 获取 OS 磁盘相关的详细信息

ASM到ARM迁移

Azure Vm 备份 - 从仅 OS 磁盘更改为所有磁盘

创建Azure磁盘快照

什么是asm

将 Azure linux OS 磁盘从普通磁盘 (hdd) 转换为标准 ssd 磁盘(预览模式)