darkpoon 发表于 2017-6-30 18:47:35

Azure ARM (13) 从现有VHD文件,创建新的ARM VM

  《Windows Azure Platform 系列文章目录》
  
  本文参考了Git Hub的ARM Template:
  https://github.com/Azure/azure-quickstart-templates/blob/master/201-vm-specialized-vhd-existing-vnet/azuredeploy.json
  但是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中。如下:
页: [1]
查看完整版本: Azure ARM (13) 从现有VHD文件,创建新的ARM VM