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

  《Windows Azure Platform 系列文章目录》

  

  本文参考了Git Hub的ARM Template:

  https://github.com/Azure/azure-quickstart-templates/tree/master/101-vm-from-user-image

 

 

  但是Git Hub上的Template不包含Availability Set,笔者在这里进行了修改。

   https://github.com/leizhang1984/AzureChinaPowerShell/tree/master/ARM/vmforuserimage

 

  在很多时候,我们需要从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/vmforuserimage

  

  7.Git Hub中的azuredeploy.json,不需要修改

  8.Git Hub中的azuredeploy.parameters.json,进行以下修改:

{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "customVmName": {
      "value": "LeiARMWeb01"
    },
    "userImageStorageAccountName": {
      "value": "leiarmstorage"
    },
    "userImageStorageAccountResourceGroupName": {
      "value": "LeiARMRG"
    },
    "osDiskVhdUri": {
      "value": "https://leiarmstorage.blob.core.chinacloudapi.cn/vhds/LeiASMWeb-LeiASMWeb01-2016-12-05.vhd"
    },
    //dnsLabelPrefix必须为小写
    "dnsLabelPrefix": {
      "value": "customdns"
    },
    "adminUsername": {
      "value": "azureadmin"
    },
    "adminPassword": {
      "value": "MyVM@123456"
    },
    "osType": {
      "value": "Windows"
    },
    "vmSize": {
      "value": "Standard_D2"
    },
    "availabilitySets_name": {
      "value": "Web_AvbSet"
    },
    "newOrExistingVnet": {
      "value": "existing"
    },
    "newOrExistingVnetName": {
      "value": "LeiARMVNet"
    },
    "newOrExistingSubnetName": {
      "value": "subnet-1"
    },
    "existingVnetResourceGroupName": {
      "value": "LeiARMRG"
    }
  }
}

  

  8.请注意:如果Azure Windows VM已经运行了Sysprep,则上面的azuredeploy.parameters.json中的adminUsername和adminPassword会生效

  9.如果之前的Azure VM没有运行Sysprep,则上面的adminUsername和adminPassword无效

  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中。如下:

  Azure ARM (13) 从现有VHD文件,创建新的ARM VM_第1张图片

 

  

你可能感兴趣的:(Azure ARM (13) 从现有VHD文件,创建新的ARM VM)