《Windows Azure Platform 系列文章目录》
本文参考了Git Hub的ARM Template:
但是Git Hub上的Template不包含Availability Set
笔者修改了这个Template,可以设置高可用集Availability Set:
https://github.com/leizhang1984/AzureChinaPowerShell/tree/master/ARM/VMSpecializedVHD
在很多时候,我们需要从Classic VM的操作系统盘的VHD文件,创建新的ARM VM。
这里的关键步骤如下:
1.创建Classic VM,并获得OS Disk的VHD路径
2.通过ARM Portal: https://portal.azure.cn,创建新的
- Azure ARM Resource Group
- ARM Storage Account
- ARM Virtual Network和Subnet
3.如果Classic VM是开机状态,请用AzCopy工具,把OS Disk和Data Disk的VHD文件,拷贝到同一个存储账号(Classic Storage)的不同Container下。
然后把VHD从Classic Storage Account,拷贝到ARM Storage Account
4.如果Classic VM是关机状态,请直接用AzCopy工具,把OS Disk和Data Disk的VHD文件,拷贝到ARM Storage Account里
5.运行Azure PowerShell,执行Template Deployment
接下来开始本节的内容
1.首先我们在ASM模式下(https://manage.windowsazure.cn),创建新的Azure Classic VM。步骤略。
2.查看这个Classic VM的OS Disk和Data Disk,如下图红色部分:
3.通过ARM Portal: https://portal.azure.cn,创建新的
- Azure ARM Resource Group
- ARM Storage Account
- ARM Virtual Network和Subnet
4.为了方便拷贝VHD,我们先把虚拟机关机。(注意关机前请先绑定固定VIP和内网DIP)
5.使用AzCopy工具,把OS Disk和Data Disk的VHD文件,拷贝到ARM Storage Account里。图略。
6.拷贝完毕后,我们需要修改相应的ARM Template
https://github.com/leizhang1984/AzureChinaPowerShell/tree/master/ARM/VMSpecializedVHD
7.Git Hub中的azuredeploy.json,不需要修改
8.Git Hub中的azuredeploy.parameters.json,进行以下修改:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "dnsNameForPublicIP": { //必须为小写 "value": "leiarmvmpublicip" }, "existingVirtualNetworkName": { //虚拟网络名称,手动预选创建好 "value": "LeiARMVNet" }, "existingVirtualNetworkResourceGroup": { //ARM模式下,Resource Group名称 "value": "LeiARMRG" }, "subnetName": { //ARM 模式下,虚拟网络子网名称 "value": "subnet-1" }, "osDiskVhdUri": { //操作系统的VHD文件 "value": "https://leiarmstorage.blob.core.chinacloudapi.cn/vhds/LeiASMWeb01-LeiASMWeb01-2017-03-27.vhd" }, "vmName": { //虚拟机名称 "value": "LeiARMVMWeb01" }, "osType": { //操作系统类型 "value": "Windows" }, "vmSize": { //虚拟机实例大小 "value": "Standard_D1_V2" }, "diagStorageAccountName":{ //diag 用的Storage Account Name,必须为小写 //可以与osDiskVhdUri所在的Storage Account Name相同 "value": "leiarmstoragediag" }, "availabilitySetName":{ //高可用集名称 "value": "Web-AvbSet" } } }
10.运行Azure PowerShell,进行验证:
#Login Azure China Cloud Add-AzureRmAccount -EnvironmentName AzureChinaCloud; # 选择Azure China 订阅ID Select-AzureRmSubscription -SubscriptionID '[订阅ID]' #执行Azure Deploy New-AzureRmResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName LeiARMRG -Mode Incremental -TemplateFile 'D:\vmforuserimage\azuredeploy.json' -TemplateParameterFile 'D:\vmforuserimage\azuredeploy.parameters.json'
11.执行完毕后,会进行ARM Storage Account的VHD文件,新建新的ARM VM中。如下: