本地制作虚拟机模板上传到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/ | 365vCloud的云计算之旅