使用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的官网没有给出完整的 ...
随机推荐
- jquery click()方法模拟点击事件对a标签不生效
if(e.keyCode == 13) { $items.eq(index).click(); return; } 搜索框下拉列表模拟点击时间,使用上述代码不能触发链接跳转 1,页面使用了bootst ...
- js常用方法汇总
产生在m.n之间的随机整数 //Math.round()把数四舍五入为最接近的整数. function random(m, n) { return Math.round(Math.random() * ...
- Go 语言defer用法
defer延迟调用: 1.确保调用在函数结束时发生: 2.defer列表为先进后出: 3.通常在Open/Close Lock/Unlock中使用. defer调用顺序示例: package mai ...
- Python 字符串概念和操作
# 字符串概念:由单个字符串组成的一个集合 # 普通字符串(非原始字符串) str = "abc" print(str) # abc # 原始字符串(前面加r) str = r&q ...
- UVA639 二叉树
题意:深度为n的二叉树每个节点上有个开关,初始为关闭,每当小球落在节点上都会改变开关的状态,问编号为m的小球最终会落在哪里. 思路:对于二叉树的节点k,左节点右节点的编号为2k,2k+1.只需由最后一 ...
- Nginx的访问日志配置信息详解
Nginx的访问日志可以让我们知晓用户的地址,网站的那些部分最受欢迎,以及用户浏览时间等.Nginx会把每个用户的访问日志记录到指定的日志文件中. Nginx主要有两个参数来控制 log_format ...
- setup in xunit
https://xunit.github.io/docs/shared-context Shared Context between Tests It is common for unit test ...
- shell 计算文件交并差
交集 $ sort a b | uniq -d 并集 $ sort a b | uniq 差集a-b $ sort a b b | uniq -u 文件乱序 cat tmp.txt | awk 'BE ...
- tensorflow笔记:流程,概念和简单代码注释
tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...
- Sharded数据分片定位数据
[http://www.tuicool.com/articles/UNnqUnU] Jedis分片 动机 在普通的Redis主/从方式,通常有一个主服务器负责"write"请求,多 ...