使用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文件:
第一个文件是部署文件,第二个文件是参数文件。
我们首先看部署文件:
一、修改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": "abc@123456"
},
"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
使用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 ...
- 使用PowerShell在Azure China创建Data Warehouse
微软的Azure Data Warehouse是基于MPP架构的分布式系统: Control Node负责管理系统和接受用户的请求,Compute Node负责计算. 目前在国内Azure Data ...
- 在Global Azure上用Azure CLI创建ARM的VM和面向公网的负载均衡
在Global的Azure上,新的Portal和ARM已经正式发布.将来传统的portal和ASM将逐渐淡出. China Azure将在今年下半年推出新的Portal管理界面和ARM功能(即IaaS ...
- Azure CLI2.0 捕获Linux ARM非托管磁盘虚拟机并创建ARM托管磁盘虚拟机
1.系统内部取消预配VM,创建了测试文件目录及文件:hlm20180904/ hlm20180904.txt 2.使用CLI2.0创建VM映像 a.登陆CLI2.0 备注:在 Azure 中国区使用 ...
- Azure ARM (22) 使用Azure PowerShell创建Azure RM VM
<Windows Azure Platform 系列文章目录> 在Azure China获得VM Image,可以执行下面的脚本. Get-AzureRmVMImagePublisher ...
- Java 创建 ARM 虚拟机磁盘类型选择的问题
问题描述 在Azure 门户创建 ARM 虚拟机时,我们直接可以选择虚拟机的磁盘类型,但是在 Azure Management Libraries for Java 的 API 中我们无法找到直接设置 ...
- Azure ARM (5) ARM Template初探 - 本地JSON Template文件(1)
<Windows Azure Platform 系列文章目录> Azure ARM (1) 概览 Azure ARM (2) 概览 Azure ARM (3) ...
- Azure上采用Json Template从已有的VHD创建VM
从已有的VHD创建VM是使用Azure中经常要操作的内容. 本文将介绍如何采用Json Template从已经有的VHD创建VM. 一.准备VHD 在我的Azure账户中选择一台VM,如下图: 查看其 ...
- 在Azure China用自定义镜像创建Azure VM Scale Set
在Azure China用自定义镜像创建Azure VM Scale Set 在此感谢世纪互联的工程师Johnny Lee和Lan,你们给了我很大的帮助.因为Azure China的官网没有给出完整的 ...
随机推荐
- java配置文件转义问题
场景: 配置文件config.properties 配置项cfg.regexp=\d+\t 加载配置文件代码 InputStream ins = PropManager ...
- webstrom上运行node项目配置操作
其实特别简单.... 去webtrom主界面找到下图的按钮,点击 点击之后弹框如下: 点击左上方绿色加号,如下图,点击node.js 点击之后,填写下图中内容: 点击应用,主界面的绿色开始按钮就可以用 ...
- nodejs模块Phantom,无界面浏览器
PhantomJS 是一个无界面的 webkit 内核浏览器,
- blast+简介
blast+有三大工具类型: 功能 search database filter 命令 blastn, blastp, blastx, tblastx, tblastn, psiblast, rpsb ...
- php数组函数-array_diff()
array_diff()函数返回两个数组的差集数组.该数组包括了所有在被比较数组中,但是不在任何其他参数数组中的键值在返回数组中,键名保持不变. array_diff(array1,array2,ar ...
- 1.2CMM/CMMI是什么?
"CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM.它是对于软件组织在定义.实施.度 ...
- 基于Visual c++ 2012的php扩展开发 - HelloWord!
1.cmd进入命令行模式,并进入php-5.6.20-src/ext源代码的ext目录下输入命令php ext_skel_win32.php --extname=HelloWord,执行结果如下图: ...
- 吴恩达深度学习笔记(九) —— FaceNet
主要内容: 一.FaceNet人脸识别简介 二.使用神经网络对人脸进行编码 三.代价函数triple loss 四.人脸库 五.人脸认证与人脸识别 一.FaceNet简介 1.FaceNet是一个深层 ...
- Android中设置自己软件的铃声+震动
有时候一些通讯软件需要这些个功能,比如说收到短信,通知等,要求手机发出铃声,或震动,或发光以提示用户知晓. 往往手机都是有默认设置的,比如说用户开启了铃声+震动:只铃声不震动:完全静音等等... 这个 ...
- Kafka详解六:Kafka如何通过源码实现监控
问题导读: 1.kafka的消费者组的消费偏移存储,kafka支持两个版本? 2.ConsumerOffsetChecker类的作用是什么? 3.Kafka如何通过源码实现 ...