《Windows Azure Platform 系列文章目錄》
update 2017-12-21
我把Azure PowerShell升級到5.0.0版本,發現語句有些細微區別:
#這里Linux用戶名和密碼 $adminName = "用戶名" $adminPassword = "密碼" #設置DNS Name和機器名 $serviceName = "DNSName" $vmName ="VMName" #VM所在的數據中心 $location = "China East" #VM大小 $vmSize ="A7" #VNet,子網,和內網IP $vNetName = 'My-VNet' $subnetName='Subnet-1' $privateIP='10.0.0.1' #外掛Disk大小 $disksize=500 $disklabel= $vmName + "DataDisk" $lun=0 $hcaching="None" $imageList = Get-AzureVMImage ` | where {$_.ImageName -like "*CentOS-65*"} $image=$imageList[0] #創建VM $vm1 = New-AzureVMConfig -Name $vmName -InstanceSize $vmSize -ImageName $image.ImageName #這里不能指定TimeZone $vm1 | Add-AzureProvisioningConfig -Linux -LinuxUser $adminName -Password $adminPassword $vm1 | Set-AzureSubnet -SubnetNames $subnetName $vm1 | Set-AzureStaticVNetIP -IPAddress $privateIP $vm1 | Add-AzureDataDisk -CreateNew -DiskSizeInGB $disksize -DiskLabel $disklabel -LUN $lun -HostCaching $hcaching New-AzureVM -ServiceName $serviceName -VM $vm1 -VNetName $vNetName -Location 'China East'
本文介紹的是由世紀互聯運維的Windows Azure China。
相比於Global Azure (http://www.windowsazure.com),國內由世紀互聯運維的Windows Azure在PowerShell僅有細微的差別。
Azure Global的IP Rang信息,可以參考:http://www.microsoft.com/en-us/download/details.aspx?id=41653
國內由世紀互聯運維的Azure China的IP Rang信息,可以參考:http://www.microsoft.com/en-us/download/details.aspx?id=42064
如果讀者用的是百度查詢IP地址,經常會發現Azure上海的IP地址經常會顯示來自北京,這是由於百度的IP庫比較老,請讀者注意
在介紹本文之前,建議讀者熟悉Azure PowerShell的基本命令,請參考筆者之前的文章:
Windows Azure Virtual Network (5) 設置Azure Virtual Machine固定Private IP
Windows Azure Virtual Network (6) 設置Azure Virtual Machine固定公網IP (Virtual IP Address, VIP) (1)
Windows Azure Virtual Network (7) 設置Azure Virtual Machine固定公網IP (Virtual IP Address, VIP) (2)
接下來,筆者會比較快速的介紹相關PowerShell命令:
如果你是第一次運行Azure PowerShell。我們要在本地創建證書文件。以便本地計算機和Azure建立可靠的安全連接。
1.以管理員身份,運行Azure PowerShell,下載publishsettings文件
Get-AzurePublishSettingsFile -Environment AzureChinaCloud
如果不想運行Azure PoweShell的話,
國外的Azure Global,請在瀏覽器中輸入地址:http://go.microsoft.com/fwlink/?LinkID=301775
在登陸框中,輸入你的用戶名和密碼
國內世紀互聯運維的Azure China,請在瀏覽器中輸入地址:http://go.microsoft.com/fwlink/?LinkID=301776
在登陸框中,輸入你的OrgID和密碼
2.將publishsettings下載到本地磁盤,然后執行上傳publishsettings命令
Import-AzurePublishSettingsFile <PathToFile>
上面步驟1、2執行成功后,下次運行Azure PowerShell將不必再次運行上面的運行。接下來可以運行我們的命令了。
3.創建新的存儲賬號(步驟略),選擇當前的訂閱,並設置存儲賬號
Set-AzureSubscription -SubscriptionName '[SubscriptionName]' -CurrentStorageAccount '[StorageName]'
4.在上海數據中心(China East),獲得固定的Public IPV4地址
$NginxReservedIP = New-AzureReservedIP -ReservedIPName 'NginxPublicIP' -Label 'NginxPublicIP' -Location 'China East'
查看這個IP地址
Get-AzureReservedIP -ReservedIPName 'NginxPublicIP'
5.創建虛擬網絡Virtual Network,命名為MyVNet (位置選擇China East)。注意Virtual Network不能屬於地緣組里。
- MyVNet IP Rang為10.0.0.0-10.0.0.255,
- 同時創建2個Subnet:Nginx-subnet和Nodejs-subnet
6.通過模糊查詢,查詢到CentOS 7.0鏡像
$imageList = Get-AzureVMImage ` | where {$_.ImageName -like "*CentOS-70*"} $image=$imageList[0]
7.創建3台虛擬機:
- DNS為MyNginx,並且綁定Public IP (NginxPublicIP)
- 機器名分別為Nginx01,Nginx02和Nginx03
- 三台機器加入虛擬機網絡MyVNet。子網為Nginx-subnet (10.0.0.0-10.0.0.127),
設置內網IP分別為10.0.0.4,10.0.0.5和10.0.0.6
- 虛擬機大小為Large
- 管理員用戶名為:adminuser。 密碼為:MyVM@6789
- 高可用性集名稱為:NginxAvbSet
- 並設置該虛擬機的時區為UTC+8時區(北京時間)
創建第1台虛擬機(Nginx01,內網IP是10.0.0.4)的命令如下:
New-AzureVMConfig -Name 'Nginx01' -InstanceSize 'Large' -ImageName $image.ImageName -AvailabilitySetName 'NginxAvbSet' ` | Add-AzureProvisioningConfig -Linux -LinuxUser 'adminuser' -Password 'MyVM@6789' -TimeZone 'China Standard Time' | Set-AzureSubnet -SubnetNames 'Nginx-subnet' | Set-AzureStaticVNetIP -IPAddress '10.0.0.4' | New-AzureVM -ServiceName 'MyNginx' -VNetName 'MyVNet' –ReservedIPName 'NginxPublicIP' -Location 'China East'
創建第2台虛擬機(Nginx02,內網IP是10.0.0.5)的命令如下:
New-AzureVMConfig -Name 'Nginx02' -InstanceSize 'Large' -ImageName $image.ImageName -AvailabilitySetName 'NginxAvbSet' ` | Add-AzureProvisioningConfig -Linux -LinuxUser 'adminuser' -Password 'MyVM@6789' -TimeZone 'China Standard Time' | Set-AzureSubnet -SubnetNames 'Nginx-subnet' | Set-AzureStaticVNetIP -IPAddress '10.0.0.5' | New-AzureVM -ServiceName 'MyNginx' -VNetName 'MyVNet'
創建第3台虛擬機(Nginx03,內網IP是10.0.0.6)的命令如下:
New-AzureVMConfig -Name 'Nginx03' -InstanceSize 'Large' -ImageName $image.ImageName -AvailabilitySetName 'NginxAvbSet' ` | Add-AzureProvisioningConfig -Linux -LinuxUser 'adminuser' -Password 'MyVM@6789' -TimeZone 'China Standard Time' | Set-AzureSubnet -SubnetNames 'Nginx-subnet' | Set-AzureStaticVNetIP -IPAddress '10.0.0.6' | New-AzureVM -ServiceName 'MyNginx' -VNetName 'MyVNet'
==========================================分隔符=============================================
上面的內容,我們介紹的是創建Linux虛擬機,接下來筆者介紹一下如何使用PowerShell,創建Windows虛擬機。
我們直接從上面的步驟6開始,通過模糊查詢,查詢到Windows Server 2012虛擬機
$imageList = Get-AzureVMImage ` | where {$_.ImageName -like "*Windows-Server-2012-Datacenter*"} $image=$imageList[0]
或者通過精確查詢,查詢到Windows Server 2008 R2 SP中文版OS
$imageList = Get-AzureVMImage ` | where {$_.ImageName -eq "55bc2b193643443bb879a78bda516fc8__Win2K8R2SP1-Datacenter-201503.01-zh.cn-127GB.vhd"} $image=$imageList[0]
55bc2b193643443bb879a78bda516fc8__Windows-Server-2012-R2-201504.01-zh.cn-127GB.vhd
7.創建2台虛擬機。
- DNS為LeiVM,並且綁定Public IP (NginxPublicIP)
- 機器名分別為LeiVM01,LeiVM02
- 三台機器加入虛擬機網絡MyVNet。子網為subnet-1 (10.0.0.0-10.0.0.127),
設置內網IP分別為10.0.0.4,10.0.0.5
- 虛擬機大小為Large
- 管理員用戶名為:adminuser。 密碼為:MyVM@6789
- 高可用性集名稱為:LeiAvbSet
創建LeiVM01的PowerShell如下:
New-AzureVMConfig -Name 'LeiVM01' -InstanceSize Large -ImageName $image.ImageName -AvailabilitySetName 'LeiAvbSet' ` | Add-AzureProvisioningConfig -Windows -AdminUsername 'adminuser' -Password 'MyVM@6789' | Set-AzureSubnet -SubnetNames 'Subnet-1' | Set-AzureStaticVNetIP -IPAddress '10.0.0.4' | New-AzureVM -ServiceName 'LeiVM' -VNetName 'MyVNet' –ReservedIPName 'NginxPublicIP' -Location 'China East'
創建LeiVM02的PowerShell如下:
New-AzureVMConfig -Name 'LeiVM02' -InstanceSize Large -ImageName $image.ImageName -AvailabilitySetName 'LeiAvbSet' ` | Add-AzureProvisioningConfig -Windows -AdminUsername 'adminuser' -Password 'MyVM@6789' | Set-AzureSubnet -SubnetNames 'Subnet-1' | Set-AzureStaticVNetIP -IPAddress '10.0.0.4' | New-AzureVM -ServiceName 'LeiVM' -VNetName 'MyVNet'
==========================================分隔符=============================================
創建一台SQL Server 2012 SP1的 Azure Virtual Machine
並設置該虛擬機的時區為UTC+8時區(北京時間)
同時關閉該虛擬機的自動更新功能
$imageList = Get-AzureVMImage | where {$_.ImageName -eq "74bb2f0b8dcc47fbb2914b60ed940c35__SQL-Server-2012SP1-Enterprise-SQL11-SP1-CU3-11.0.3350.0-Win2012-ENU"} $image=$imageList[0] New-AzureVMConfig -Name 'LeiSQLVM01' -InstanceSize 'Medium' -ImageName $image.ImageName -AvailabilitySetName 'LeiSQLAvbSet' ` | Add-AzureProvisioningConfig -Windows -AdminUsername 'azureadmin' -Password 'MyVM@6789' -TimeZone 'China Standard Time' -DisableAutomaticUpdates | Set-AzureSubnet -SubnetNames 'SQL-Subnet' | Set-AzureStaticVNetIP -IPAddress '10.0.0.132' | New-AzureVM -ServiceName 'LeiSQLCS' -VNetName 'LeiSQLAlwaysOnVNet' -Location 'China East'
Update 2015-12-9,今天發現一個Azure PowerShell,可以導出所有的Azure VM Template Name,方便以后使用:
$images = Get-AzureVMImage $count = $images.Count for($i=0;$i -lt $count;$i++){ $i.ToString() + " : " + $images[$i].ImageName; }
部分截圖信息如下: