用PowerShell在China Azure建立ARM虛擬機器

衡子發表於2016-05-05

Azure目前有兩種工作模式:ASM和ARM。

在國內的Azure,我們都是使用ASM的模式。但這種模式有很多限制,比如每個VM必須有一個公網地址,部署不能批量部署等等。ARM對Azure的整體架構做了巨大的修改。在ASM中的很多限制都去掉了。下圖是兩種模式主要的差別:

今年中Azure在中國將全面支援ARM的模式。目前需要注意的是,在China Azure上需要採用PowerShell的版本是1.2.2。最新版的1.3.2和1.4.0有一些服務不能建立。具體的下載地址是:

https://github.com/Azure/azure-powershell/releases/download/v1.2.2-March2016/azure-powershell.1.2.2.msi

 

本文將介紹一些簡單的基於ARM模式的Azure資源的建立和管理方式。

1.建立Resource Group

首先要新增ARM的賬戶:

Add-AzureRmAccount -EnvironmentName AzureChinaCloud

選擇這個賬號:

Select-AzureSubscription -SubscriptionName "xxxx" -Account xxxx@xxxx.partner.onmschina.cn

建立Resouce Group

 

New-AzureRmResourceGroup -Name hwarm01 -Location "China East"

ResourceGroupName : hwarm01
Location : chinaeast
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/42e8b20d-29ec-40a5-b020-b2229f3dda56/resourceGroups/hwarm01

 

2. 建立網路相關內容

2.1 建立VNet

$subnet1 = New-AzureRmVirtualNetworkSubnetConfig -Name Subnet-1 -AddressPrefix 172.17.1.0/24
$subnet2 = New-AzureRmVirtualNetworkSubnetConfig -Name Subnet-2 -AddressPrefix 172.17.2.0/24
$subnet3 = New-AzureRmVirtualNetworkSubnetConfig -Name Subnet-3 -AddressPrefix 172.17.3.0/24
$vnet = New-AzureRmVirtualNetwork -Name hwarmvnet01 -ResourceGroupName hwarm01 -Location "China East" -AddressPrefix 172.17.0.0/16 -Subnet $subnet1,$subnet2,$subnet3

2.2 建立保留IP

$piplb = New-AzureRmPublicIpAddress -ResourceGroupName hwarm01 -Name hwpiplb01 -Location "China East" -AllocationMethod Static

2.3建立HASet

$has = New-AzureRmAvailabilitySet -ResourceGroupName hwarm01 -Name hwarmhas01 -Location "China East"

2.4 建立負載均衡

$fendip = New-AzureRmLoadBalancerFrontendIpConfig -Name fendip -PublicIpAddressId $piplb.Id
$bendip = New-AzureRmLoadBalancerBackendAddressPoolConfig -Name bendip
$inboundNATRule1 = New-AzureRmLoadBalancerInboundNatRuleConfig -name ssh1 -FrontendIpConfigurationId $fendip.Id -Protocol Tcp -FrontendPort 22122 -BackendPort 22
$inboundNATRule2 = New-AzureRmLoadBalancerInboundNatRuleConfig -name ssh2 -FrontendIpConfigurationId $fendip.Id -Protocol Tcp -FrontendPort 22222 -BackendPort 22
$lbprobe = New-AzureRmLoadBalancerProbeConfig -Name hwlbprobe -Protocol Tcp -Port 80 -IntervalInSeconds 15 -ProbeCount 2
$lbrule = New-AzureRmLoadBalancerRuleConfig -Name hwlbrule -FrontendIpConfigurationId $fendip.Id -BackendAddressPoolId $bendip.Id -ProbeId $lbprobe.Id -Protocol Tcp -FrontendPort 80 -BackendPort 80 -LoadDistribution SourceIP
$lb = New-AzureRmLoadBalancer -Name hwlb -ResourceGroupName hwarm01 -Location "China East" -FrontendIpConfiguration $fendip -BackendAddressPool $bendip -Probe $lbprobe -InboundNatRule $inboundNATRule1 -LoadBalancingRule $lbrule

 

2.5 建立網路卡

$nic1 = New-AzureRmNetworkInterface -Name nic1 -ResourceGroupName hwarm01 -Location "China East" -PrivateIpAddress 172.17.1.4 -SubnetId $vnet.Subnets[0].Id -LoadBalancerBackendAddressPoolId $lb.BackendAddressPools[0].id -LoadBalancerInboundNatRuleId $lb.InboundNatRules[0].Id
$nic2 = New-AzureRmNetworkInterface -Name nic2 -ResourceGroupName hwarm01 -Location "China East" -PrivateIpAddress 172.17.1.5 -SubnetId $vnet.Subnets[0].Id -LoadBalancerBackendAddressPoolId $lb.BackendAddressPools[0].id -LoadBalancerInboundNatRuleId $lb.InboundNatRules[1].Id

3. 建立儲存相關的

3.1. 建立儲存賬號

New-AzureRmStorageAccount -ResourceGroupName hwarm01 -Name hwarmsa01 -Type Standard_LRS -Location "China East"

3.2建立container

$sa = Get-AzureRmStorageAccount -ResourceGroupName hwarm01 -Name hwarmsa01
$sa | New-AzureStorageContainer -Permission Off vhds

3.3 定義OSDisk, DataDisk的URI

$OSdiskName = "hwarmvm01-osdisk.vhd"
$OSDiskURI = $sa.PrimaryEndpoints.Blob.AbsoluteUri + "vhds/" + $OSdiskName
$dataDiskName = "hwarmvm01-datadisk.vhd"
$dataDiskURI = $sa.PrimaryEndpoints.Blob.AbsoluteUri + "vhds/" + $dataDiskName

4. 定義VM的屬性

4.1 定義VM基本屬性

$vmname = "hwarmvm01"
$vmsize = "Standard_A1"
$cred = Get-Credential -UserName hengwei -Message hwarmvm01
$vm = New-AzureRmVMConfig -VMName $vmname -VMSize $vmsize -AvailabilitySetId $has.Id

4.2定義VMImage的資訊

Get-AzureRmVMImage -Location "China East" -PublisherName OpenLogic -Offer CentOS -Skus 6.5

Version FilterExpression Skus Offer PublisherName Location Id

------- ---------------- ---- ----- ------------- -------- --

6.5.20150904 6.5 CentOS OpenLogic chinaeast /Subscriptions/42e8b20d-29ec-40a5-b020-b22...

6.5.20160329 6.5 CentOS OpenLogic chinaeast /Subscriptions/42e8b20d-29ec-40a5-b020-b22...

$vmimage = Get-AzureRmVMImage -Location "China East" -PublisherName OpenLogic -Offer CentOS -Skus 6.5 -Version 6.5.20160329

4.3定義VM作業系統資訊

$vm = Set-AzureRmVMOperatingSystem -Linux -VM $vm -Credential $cred -ComputerName $vmname

4.4定義VM磁碟資訊

$vm = Set-AzureRmVMSourceImage -VM $vm -PublisherName $vmimage.PublisherName -Offer $vmimage.Offer -Skus $vmimage.Skus -Version $vmimage.Version
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $OSdiskName -VhdUri $OSDiskURI -CreateOption fromImage
$vm = add-AzureRmVMDataDisk -VM $vm -Name $dataDiskName -VhdUri $dataDiskURI -CreateOption empty -DiskSizeInGB 100

4.5定義VM網路卡資訊

$vm = Add-AzureRmVMNetworkInterface -VM $vm -id $nic1.Id

5. 建立虛擬機器

New-AzureRmVM -ResourceGroupName hwarm01 -Location "China East" -VM $vm

 

相關文章