当前位置: 首页 > Microsoft Azure > 正文

本地制作虚拟机模板上传到Azure China(2)

前文已经详细说明了,本地制作VHD文件上传到Azure平台中前期需要准备的基本环境,本文重点是将VHD文件上载到Azure China中并基于此新建ARM VM。

安装Microsoft Azure VM Agent

安装 Azure VM代理。然后即可启用VM扩展。VM扩展实现了可能需要用于VM的大多数关键功能,例如重置密码、配置RDP等

更多说明,可以参考之前写的文章:http://365vcloud.net/2017/12/04/microsoft-azure-vm-agent-and-extensions/

使用 Sysprep封装Windows VM

Sysprep将删除所有个人帐户信息及其他某些数据,并准备好要用作映像的计算机

记住,不要选择”重新启动”

使用Azure PowerShell登陆Azure China账户

打开 Azure PowerShell并登录到Azure帐户。此时会打开一个弹出窗口让输入Azure 帐户凭据。

Login-AzureRmAccount -EnvironmentName AzureChinaCloud

如果您的账户中有多个订阅,请使用下面命令选择某一个订阅

Select-AzureRmSubscription -SubscriptionId “<subscriptionID>”

在中国东部区域中创建名为CloudVMGroup的资源组

New-AzureRmResourceGroup -Name CloudVMGroup -Location “China East”

在该资源组中创建存储账户

New-AzureRmStorageAccount -ResourceGroupName CloudVMGroup -Name vmstorageaccount -Location “China East”
-SkuName “Standard_LRS” -Kind “Storage”

其中有一个参数,需要说明的是

-SkuName 的参数值为:

Standard_LRS – 本地冗余存储。

Standard_ZRS – 区域冗余存储。

Standard_GRS – 异地冗余存储。

Standard_RAGRS – 读取访问权限异地冗余存储。

Premium_LRS – 高级本地冗余存储。

将VHD上传到存储帐户

$rgName “CloudVMGroup” 

$urlOfUploadedImageVhd “https://vmstorageaccount.blob.core.chinacloudapi.cn/vhdcontainer/WinSrv2016OS.vhd”

Add-AzureRmVhd -ResourceGroupName $rgName -Destination $urlOfUploadedImageVhd -LocalFilePath “C:\Hyper-V\WinSrv2016\WinSrv2016OS.vhd”

上传所需的时间,取决于您的出口带宽以及VHD文件大小,

因为我们将基于上传的VHD创建托管磁盘和VM,因此,我们需要记录”DestinationUri”

上面是使用Azure PowerShell操作的,我们也可以用Azure Portal图形化界面完成VHD上传

除了使用Azure PowerShell上传之外,我们还可以使用其他工具

AzCopy

Azure存储复制 Blob API

Azure存储资源管理器上传Blob

Storage Import/Export Service REST API

下面列出常用的另外两种方式

AzCopy

AzCopy
/Source:C:\Hyper-V\WinSrv2016
/Dest:https://vmstorageaccount.blob.core.chinacloudapi.cn/vhdcontainer
/DestKey:yheTEJOD9qpiK39MUoAb3yebFs2pxC3ZGtzXFw6NSwFaJ5SV4i4uL54NI0YXi70kumFuoN7K4J5JyH1v28pJBA==
/Pattern:”WinSrv2016OS.vhd”
/BlobType:page

Azure存储资源管理器上传Blob




通过上传的VHD创建托管映像

使用上传的经过sysprep的OS VHD 创建托管映像

#通过上传的 VHD 创建托管映像

$vmName “CloudVM” 

$computerName “CloudVM”

$vmSize “Standard_A2”

$location “China East”

$imageName “WinSrv2016OS”
$imageConfig New-AzureRmImageConfig -Location $location
$imageConfig Set-AzureRmImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri $urlOfUploadedImageVhd
$image New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig

创建虚拟网络

创建虚拟子网

$subnetName “CloudSubnet”

$singleSubnet New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24

创建”CloudvNet”的虚拟网络,其地址前缀为10.0.0.0/16

$vnetName “CloudvNet”

$vnet New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet


创建公共IP地址和网络接口

$ipName “CloudPip”

$pip New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location -AllocationMethod Dynamic


创建名为 CloudNic的 NIC

$nicName “CloudNic”

$nic New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id


创建名为CloudNSG的NSG,并设置一条入站规则CloudRDPRule,即3389端口的RDP

$nsgName “CloudNSG”

$ruleName “CloudRDPRule”

$rdpRule New-AzureRmNetworkSecurityRuleConfig -Name $ruleName -Description “Allow RDP” -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 -SourceAddressPrefix Internet -SourcePortRange -DestinationAddressPrefix -DestinationPortRange 3389

$nsg New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $location -Name $nsgName -SecurityRules $rdpRule


为虚拟网络创建变量

$vnet Get-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName

设定Azure VM名称和大小

$vm New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize

将VM映像设置为新VM的源映像

$vm Set-AzureRmVMSourceImage -VM $vm -Id $image.Id


设置AzureVM的凭据


设置OS配置并添加NIC

$vm Set-AzureRmVMOSDisk -VM $vm -DiskSizeInGB 30 -CreateOption FromImage -Caching ReadWrite

$vm Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $computerName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate

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


创建Azure Windows VM

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

等待创建的过程中,我们使用Azure Portal查看前面创建的内容,例如NIC、虚拟网络


可以看出,除了正在创建的VM,其他的都已经完成

查看创建的NSG策略

此时虚拟机已经创建完成

查看创建的Azure Windows VM

Get-AzureRmVM



点击”连接”下载RDP文件以访问该VM


以上即是使用自定义并上传VHD文件,然后创建基于托管磁盘创建Azure VM的过程。


本文固定链接: http://365vcloud.net/2017/12/06/create-azure-arm-vm-based-on-vhd/ | Eric的学习之路

该日志由 TingXu 于2017年12月06日发表在 Microsoft Azure 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 本地制作虚拟机模板上传到Azure China(2) | Eric的学习之路
关键字: