Azure云计算

如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

作为Azure的一种新的部署模式,ARM部署模式相对于ASM经典部署模式而言,具有更大的灵活性。他们两者在架构上具有很大的差异,因此在某些领域,他们两者所部署的资源是不兼容的,例如虚拟网络和虚拟机。

在经典部署模式下虚拟网络中的虚拟机是无法直接迁移到ARM部署模式虚拟网络的,在这里我会介绍一个相对而言比较简单的方法去做相关的迁移。

如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络插图

现在,我有两个虚拟网络ASM vnet和ARM vnet,前者为ASM经典部署模式,后者为ARM部署模式:
下图为:ASM vnet 资源组,windows虚拟机ASMvm在虚拟网络ASM的演示。
如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

下图为:ARMvnet 资源组,其中也有一台windows虚拟机ARMvm。
如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

在ARMDemo-vnet中只有一个默认子网:

如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

现在要将ASM虚拟网络中的虚拟机迁移至ARM虚拟网络:ARMDemo-vnet。首先,我们先确定ASM虚拟机(磁盘位置信息位于虚拟机磁盘选项中)系统磁盘的位置,以保留磁盘的方式删除ASMvm虚拟机:

如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

然后将此虚拟机的系统盘复制到与ARMDemo-vent同一区域的存贮账户中,这里我们可以使用Azure 官方提供的Azure Storage Explorer 来进行复制,这里我复制到ARMDemo 资源组的armdemodisks356存贮账户中:

如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

在上方菜单栏选择粘贴即可完成复制。

如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

到此我们已经把ASM虚拟机的系统盘复制到ARM的存储账户中,我们先复制它的位置:

如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

接下来我们可以运行下面的脚本,用这个系统盘来创建一台新的虚拟机,并加入到ASM虚拟网络中:

$rgName = "<你的资源组名,这里我的值为ARMDemo>"
$vnetName = "<目标虚拟网络名,这里我的值为ARMDemo-vnet>"
$rg = AzureRmResourceGroup $rgName
$location = $rg.location
$osDiskUri = "<ASM虚拟机的系统盘在ARM存储账户中的位置(URL)>"

$vnet = AzureRmvirtualNetwork -Name $vnetName -ResourceGroupName $rgName

$ipName = "新的虚拟机IP名,我这里的值为FormerASMvmIP"
$pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location -AllocationMethod Dynamic
 
$nicName = "新的虚拟机的NIC名,我这里的值为FormerASMvmNic,这里我直接把虚拟机的NIC加入到default子网中"
$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id

$rdpRule = New-AzureRmNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389
$nsgName = "新的虚拟机的NSG名,我这里的值为FormerASMvmNsg"
$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $location -Name $nsgName -SecurityRules $rdpRule
 
$vmName = "新的虚拟机名,我这里的值为FormerASMvm"
$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize "Standard_F1s"

$vm = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id

$osDiskName = $vmName + "osDisk"
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption attach -Windows

New-AzureRmVM -ResourceGroupName $rgName -Location $location -VM $vm

运行成功后我们可以发现,原来ASM虚拟机已经创建为ARM虚拟机,并且网络接口已经在ASMDemo-vnet这个ARM虚拟网络中:

如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

如何将Azure的ASM经典虚拟网络中的虚拟机迁移至ARM虚拟网络

到此我们就完成了将单个虚拟机从ASM虚拟网络迁移到ARM虚拟网络的过程。

 

(END)

文章源自:Dev Chat 在线支持

作者: