使用Json Template在Azure China创建ARM类型的虚拟机

前面几篇文章介绍过Azure的两种VM的模式,包括ASM和ARM。并且介绍了如何用Azure CLI和PowerShell创建虚拟机。本文将介绍如何采用Json的Template来创建基于ARM的VM。

当然采用Json Template的方式创建虚拟机是几种方式中最好的,这样可以便于批量部署、Json文件可以重用。

ARM的Template的格式采用的是Json的格式。其需要的几个部分如下:

需要定义的有:parameters,variables,resources和outputs。但只有resources是必须的。

由于Template的内容比较复杂,一般都采用复制已有的Template Jason文件修改的方式。

目前,在Github上有大量的Azure ARM Jason Template,可以下载修改使用。

具体的网址在:

https://github.com/Azure/azure-quickstart-templates

比如我们要创建一台CentOS 6.5的Linux虚拟机。在上面的链接中,没有相应的template。我们通过一台Ubuntu的Template进行修改。

首先下载两个Jason文件:

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-linux/azuredeploy.json

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-linux/azuredeploy.parameters.json

第一个文件是部署文件,第二个文件是参数文件。

我们首先看部署文件:

一、修改parameter中的内容

1 把Ubuntu版本改成CentOS版本:

    "ubuntuOSVersion": {
      "type": "string",
      "defaultValue": "14.04.2-LTS",
      "allowedValues": [
        "12.04.5-LTS",
        "14.04.2-LTS",
        "15.10"
      ],

改成

    "CentOSVersion": {
      "type": "string",
      "defaultValue": "6.5",
      "allowedValues": [
        "6.5",
        "6.6",
        "7.0",
        "7.1"
      ],

2 把metadata的描述更改

"metadata": {
    "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.2-LTS, 15.10."
}

改为:

"metadata": {
    "description": "The CentOS version for the VM. This will pick a fully patched image of this given CentOS version. Allowed values: 6.5, 6.6, 7.0, 7.1."
}

二、修改variables中的内容

原始的变量定义如下:

  "variables": {
    "storageAccountName": "[concat(uniquestring(resourceGroup().id), ‘salinuxvm‘)]",
    "dataDisk1VhdName": "datadisk1",
    "imagePublisher": "Canonical",
    "imageOffer": "UbuntuServer",
    "OSDiskName": "osdiskforlinuxsimple",
    "nicName": "myVMNic",
    "addressPrefix": "10.0.0.0/16",
    "subnetName": "Subnet",
    "subnetPrefix": "10.0.0.0/24",
    "storageAccountType": "Standard_LRS",
    "publicIPAddressName": "myPublicIP",
    "publicIPAddressType": "Dynamic",
    "vmStorageAccountContainerName": "vhds",
    "vmName": "MyUbuntuVM",
    "vmSize": "Standard_D1",
    "virtualNetworkName": "MyVNET",
    "vnetID": "[resourceId(‘Microsoft.Network/virtualNetworks‘,variables(‘virtualNetworkName‘))]",
    "subnetRef": "[concat(variables(‘vnetID‘),‘/subnets/‘,variables(‘subnetName‘))]",
    "apiVersion": "2015-06-15"
  },

更改为:

  "variables": {
    "storageAccountName": "[concat(uniquestring(resourceGroup().id), ‘salinuxvm‘)]",
    "dataDisk1VhdName": "datadisk1",
    "imagePublisher": "OpenLogic",
    "imageOffer": "CentOS",
    "OSDiskName": "osdiskforlinuxsimple",
    "nicName": "myVMNic",
    "addressPrefix": "10.0.0.0/16",
    "subnetName": "Subnet",
    "subnetPrefix": "10.0.0.0/24",
    "storageAccountType": "Standard_LRS",
    "publicIPAddressName": "myPublicIP",
    "publicIPAddressType": "Dynamic",
    "vmStorageAccountContainerName": "vhds",
    "vmName": "MyCentOSVM",
    "vmSize": "Standard_A1",
    "virtualNetworkName": "MyVNET",
    "vnetID": "[resourceId(‘Microsoft.Network/virtualNetworks‘,variables(‘virtualNetworkName‘))]",
    "subnetRef": "[concat(variables(‘vnetID‘),‘/subnets/‘,variables(‘subnetName‘))]",
    "apiVersion": "2015-06-15"
  },

修改完部署文件后,修改参数文件:

参数文件如下:

{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "adminUsername": {
      "value": "azureUser"
    },
    "adminPassword": {
      "value": "GEN-PASSWORD"
    },
    "dnsLabelPrefix": {
      "value": "GEN-UNIQUE"
    },
    "ubuntuOSVersion": {
      "value": "14.04.2-LTS"
    }
  }
}

更改为:

{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "adminUsername": {
      "value": "hengwei"
    },
    "adminPassword": {
      "value": "[email protected]"
    },
    "dnsLabelPrefix": {
      "value": "hwvm"
    },
    "CentOSVersion": {
      "value": "6.5"
    }
  }
}

并把两个文件上传到Github上,链接如下:

https://raw.githubusercontent.com/hengv/Hengwei/Azure/101-simple-linux/azuredeploy.json

https://raw.githubusercontent.com/hengv/Hengwei/Azure/101-simple-linux/azuredeploy.parameters.json

下面可以通过PowerShell命令通过Jason Template创建VM了:

New-AzureRmResourceGroup -Name hw01 -Location chinaeast

ResourceGroupName : hw01
Location          : chinaeast
ProvisioningState : Succeeded
Tags              :
ResourceId        : /subscriptions/xxxxxxxx/resourceGroups/hw01 
New-AzureRmResourceGroupDeployment -Name hwvm01 -ResourceGroupName hw01 -TemplateUri https://raw.githubusercontent.com/hengv/Hengwei/Azure/101-simple-linux/azuredeploy.json -TemplateParameterUri https://raw.githubusercontent.com/hengv/Hengwei/Azure/101-simple-linux/azuredeploy.parameters.json -Mode Incremental

DeploymentName          : hwvm01
ResourceGroupName       : hw01
ProvisioningState       : Succeeded
Timestamp               : 2016/7/1 14:09:58
Mode                    : Incremental
TemplateLink            :
                          Uri            : https://raw.githubusercontent.com/hengv/Hengwei/Azure/101-simple-linux/azuredeploy.json
                          ContentVersion : 1.0.0.0

Parameters              :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          adminUsername    String                     hengwei
                          adminPassword    SecureString
                          dnsLabelPrefix   String                     hwvm
                          centOSVersion    String                     6.5       

Outputs                 :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          hostname         String                     hwvm.chinaeast.cloudapp.azure.com
                          sshCommand       String                     ssh hengwei@hwvm.chinaeast.cloudapp.azure.com

DeploymentDebugLogLevel : 

创建成功。

再通过下面的命令查看:

get-azurermvm

RequestId                         : afe8fb47-4e2f-434f-aa40-4d230a549598
StatusCode                        : OK
ResourceGroupName                 : HW01
Id                                : /subscriptions/xxxxxxxx/resourceGroups/HW01/providers/Microsoft.Compute/virtualMachines/MyCentOSVM
Name                              : MyCentOSVM
Type                              : Microsoft.Rest.Azure.AzureOperationResponse`1[Microsoft.Rest.Azure.IPage`1[Microsoft.Azure.Management.Compute.Models.VirtualMachine]]
Location                          : chinaeast
Tags                              : {}
DiagnosticsProfile                :
  BootDiagnostics                 :
    Enabled                       : True
    StorageUri                    : https://eyyvnizdwsddusalinuxvm.blob.core.chinacloudapi.cn/
HardwareProfile                   :
  VmSize                          : Standard_A1
NetworkProfile                    :
  NetworkInterfaces[0]            :
    Id                            : /subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/networkInterfaces/myVMNic
OSProfile                         :
  ComputerName                    : MyCentOSVM
  AdminUsername                   : hengwei
  LinuxConfiguration              :
    DisablePasswordAuthentication : False
ProvisioningState                 : Succeeded
StorageProfile                    :
  ImageReference                  :
    Publisher                     : OpenLogic
    Offer                         : CentOS
    Sku                           : 6.5
    Version                       : latest
  OsDisk                          :
    OsType                        : Linux
    Name                          : osdisk
    Vhd                           :
      Uri                         : https://eyyvnizdwsddusalinuxvm.blob.core.chinacloudapi.cn/vhds/osdiskforlinuxsimple.vhd
    Caching                       : ReadWrite
    CreateOption                  : FromImage
  DataDisks[0]                    :
    Lun                           : 0
    Name                          : datadisk1
    Vhd                           :
      Uri                         : https://eyyvnizdwsddusalinuxvm.blob.core.chinacloudapi.cn/vhds/datadisk1.vhd
    Caching                       : None
    CreateOption                  : Empty
    DiskSizeGB                    : 100
DataDiskNames[0]                  : datadisk1
NetworkInterfaceIDs[0]            : /subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/networkInterfaces/myVMNic 
Get-AzureRmNetworkInterface

Name                 : myVMNic
ResourceGroupName    : hw01
Location             : chinaeast
Id                   : /subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/networkInterfaces/myVMNic
Etag                 : W/"1e379401-4980-42c6-ba83-9e26f19133bd"
ResourceGuid         : c4e50ac6-fdb1-416c-a5b2-d71baace6b55
ProvisioningState    : Succeeded
Tags                 :
VirtualMachine       : {
                         "Id": "/subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Compute/virtualMachines/MyCentOSVM"
                       }
IpConfigurations     : [
                         {
                           "Name": "ipconfig1",
                           "Etag": "W/\"1e379401-4980-42c6-ba83-9e26f19133bd\"",
                           "Id": "/subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/networkInterfaces/myVMNic/ipConfigurations/ipconfig1",
                           "PrivateIpAddress": "10.0.0.4",
                           "PrivateIpAllocationMethod": "Dynamic",
                           "Subnet": {
                             "Id": "/subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/virtualNetworks/MyVNET/subnets/Subnet"
                           },
                           "PublicIpAddress": {
                             "Id": "/subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/publicIPAddresses/myPublicIP"
                           },
                           "ProvisioningState": "Succeeded",
                           "LoadBalancerBackendAddressPools": [],
                           "LoadBalancerInboundNatRules": [],
                           "ApplicationGatewayBackendAddressPools": []
                         }
                       ]
DnsSettings          : {
                         "DnsServers": [],
                         "AppliedDnsServers": []
                       }
EnableIPForwarding   : False
NetworkSecurityGroup : null
Primary              : True 
Get-AzureRmPublicIpAddress

Name                     : myPublicIP
ResourceGroupName        : hw01
Location                 : chinaeast
Id                       : /subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/publicIPAddresses/myPublicIP
Etag                     : W/"0d4e57f8-25a1-4bf7-bec9-e98785ed8179"
ResourceGuid             : f8216ff0-06a6-478b-8270-f18fc717c0f7
ProvisioningState        : Succeeded
Tags                     :
PublicIpAllocationMethod : Dynamic
IpAddress                : 42.159.235.75
IdleTimeoutInMinutes     : 4
IpConfiguration          : {
                             "Id": "/subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/networkInterfaces/myVMNic/ipConfigurations/ipconfig1"
                           }
DnsSettings              : {
                             "DomainNameLabel": "hwvm",
                             "Fqdn": "hwvm.chinaeast.cloudapp.chinacloudapi.cn" 
Get-AzureRmVirtualNetwork

Name              : MyVNET
ResourceGroupName : hw01
Location          : chinaeast
Id                : /subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/virtualNetworks/MyVNET
Etag              : W/"888d8b21-091b-4f40-b2ba-284f16c0f641"
ResourceGuid      : a69ef02a-728e-4212-8c2a-7a7c0f4bb881
ProvisioningState : Succeeded
Tags              :
AddressSpace      : {
                      "AddressPrefixes": [
                        "10.0.0.0/16"
                      ]
                    }
DhcpOptions       : null
Subnets           : [
                      {
                        "Name": "Subnet",
                        "Etag": "W/\"888d8b21-091b-4f40-b2ba-284f16c0f641\"",
                        "Id": "/subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/virtualNetworks/MyVNET/subnets/Subnet",
                        "AddressPrefix": "10.0.0.0/24",
                        "IpConfigurations": [
                          {
                            "Id": "/subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Network/networkInterfaces/myVMNic/ipConfigurations/ipconfig1"
                          }
                        ],
                        "ProvisioningState": "Succeeded"
                      }
                    ] 
Get-AzureRmStorageAccount

ResourceGroupName   : hw01
StorageAccountName  : eyyvnizdwsddusalinuxvm
Id                  : /subscriptions/xxxxxxxx/resourceGroups/hw01/providers/Microsoft.Storage/storageAccounts/eyyvnizdwsddusalinuxvm
Location            : chinaeast
Sku                 : Microsoft.Azure.Management.Storage.Models.Sku
Kind                : Storage
Encryption          :
AccessTier          :
CreationTime        : 2016/7/1 14:07:14
CustomDomain        :
LastGeoFailoverTime :
PrimaryEndpoints    : Microsoft.Azure.Management.Storage.Models.Endpoints
PrimaryLocation     : chinaeast
ProvisioningState   : Succeeded
SecondaryEndpoints  :
SecondaryLocation   :
StatusOfPrimary     : Available
StatusOfSecondary   :
Tags                : {}
Context             : Microsoft.WindowsAzure.Commands.Common.Storage.AzureStorageContext 
时间: 2024-10-10 08:11:49

使用Json Template在Azure China创建ARM类型的虚拟机的相关文章

用Json Template在Azure上创建Cisco CSR路由器

Azure的ARM模式可以通过Json的模板创建VM.本文以Cisco的CSR的image为例,介绍如何用Json的创建VM. 一.Cisco CSR的Image 首先把Cisco CSR的image复制到一个存储账户中: https://xxxx.blob.core.chinacloudapi.cn/image/CSR_3_16_4aS_CCO.vhd 创建VM的vhd文件也需要在这个存储账户中. 二.获得Json模板 在Github上找到From user image create VM的J

使用PowerShell在Azure China创建Data Warehouse

微软的Azure Data Warehouse是基于MPP架构的分布式系统: Control Node负责管理系统和接受用户的请求,Compute Node负责计算. 目前在国内Azure Data Warehouse已经落地了.可以使用新的Portal页面进行管理,也可以使用PowerShell进行管理. 本文将介绍用PowerShell的管理方式.包括创建.Scale out.Suspend和Resume. 1 环境准备 登陆Azure China,并创建Resource Group $my

在Global Azure上用Azure CLI创建ARM的VM和面向公网的负载均衡

在Global的Azure上,新的Portal和ARM已经正式发布.将来传统的portal和ASM将逐渐淡出. China Azure将在今年下半年推出新的Portal管理界面和ARM功能(即IaaS v2).本文将通过Azure CLI命令行的方式在ARM模式下,创建VM和负载均衡. 在ASM模式下,我们经常使用Endpoint和负载均衡SLB的功能.同样在ARM模式下,SLB也是一个非常重要的功能.但在ARM下和ASM的最重要的不同是:LoadBalancer不再是关联到VM上的属性了.就是

Azure CLI创建ARM的VM和面向公网的负载均衡

新的Portal管理界面和ARM功能(即IaaS v2).本文将通过Azure CLI命令行的方式在ARM模式下,创建VM和负载均衡. 在ASM模式下,我们经常使用Endpoint和负载均衡SLB的功能.同样在ARM模式下,SLB也是一个非常重要的功能.但在ARM下和ASM的最重要的不同是:LoadBalancer不再是关联到VM上的属性了.就是说,VM可以没有公网IP,可以没有负载均衡对外提供服务. 这种部署模式更加符合企业应用的部署模式.在企业应用中,只有前端的展现层才会有与外部网络的连接,

在Azure中创建多网卡虚拟机

Azure支持创建多网卡的虚拟机,多网卡的虚拟机是许多网络虚拟设备所必须的.借助多个网卡和网络安全组规则,可以更好地管理网络流量,对多个网卡之间进行流量隔离.但并不是所有的虚拟机都支持多个网卡.虚拟机支持的网卡数量,有虚拟机的大小决定.可以参考下表进行选择. 最大网卡数量 虚拟机大小 2 Standard_A3.Standard_A6 Standard_A2_v2.Standard_A2m_v2 Standard_D2.Standard_D11 Standard_D2_v2.Standard_D

在Azure China用自定义镜像创建Azure VM Scale Set

在Azure China用自定义镜像创建Azure VM Scale Set 在此感谢世纪互联的工程师Johnny Lee和Lan,你们给了我很大的帮助.因为Azure China的官网没有给出完整的步骤,所以我在这里把完整的步骤总结一下,希望对大家有所帮助. Azure Global有一篇介绍如何用自定义镜像创建Azure VM Scale Set的文章.因为里面用到的"type": "Microsoft.Compute/images" 部分,我自己没在Azure

Azure China Application Gateway 性能监控

目前中国区Azure Portal无法支持应用程序网关的日志诊断,显示和告警功能,之前在www.azure.cn网站的应用程序网关文档页面曾经出现过关于日志诊断的配置文章,但其实是直接翻译自Azure Global的,现在已经被删除. 这样意味着中国客户使用AppGW的网站或API,无法通过直接对AppGW的使用情况进行监控,以进行适当的性能扩展.如果一定要看,只能向21V开工单申请拉性能图表,但实时性差了很多,也不方便.这一问题已遭到客户的多次吐槽. 而微软后台研发在上周末由于客户的强烈需求,

Azure China (4) 管理Azure China Storage Account

<Windows Azure Platform 系列文章目录> 看过我之前几章内容的读者都知道,Azure China和Azure Global服务类型的Endpoint是不同的,比如我们创建一个Azure Storage,命名为leizhangstorage.则这个Azure Storage的Endpoint为 - Blob:http://leizhangstorage.blob.core.chinacloudapi.cn/ - Table:http://leizhangstorage.ta

Azure China (3) 使用Visual Studio 2013发布Cloud Service至Azure China

<Windows Azure Platform 系列文章目录> 之前有很多网友询问我如何通过VS发布Cloud Service至Azure China,这里我专门写篇文章,给大家详细介绍下. 笔者使用的是VS2013,首先我们下载Windows Azure SDK for .NET - 可以通过Azure China网站,地址在http://www.windowsazure.cn/zh-cn/downloads/?sdk=net. - 也可以通过Azure Global网站,地址在http:/