复制 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 中保留/设置默认管理员密码的主要内容,如果未能解决你的问题,请参考以下文章