使用Azure REST API建立虛擬機器

HollisYao發表於2016-06-01

                                                                Hollis Yao, Shihao Rong 

使用REST API建立虛擬機器之前,首先要確保Azure訂閱中已經建好了"雲服務"和"儲存賬號"。如果沒有的話,可以使用Azure管理頁面,或Powershell命令列工具,或REST API來建立雲服務和儲存賬號。

https://msdn.microsoft.com/library/gg441304.aspx

https://azure.microsoft.com/zh-cn/documentation/articles/storage-create-storage-account/

 

另外需要注意的是,由於國內的Azure是獨立運營的,因此呼叫API時,需要將MSDN程式碼中的https://management.core.windows.net

替換成:

https://management.core.chinacloudapi.cn/

 

隨後需要在呼叫API的客戶端主機上安裝證書並上傳到Azure Portal。

安裝並上傳證書。

步驟如下:

1 使用Visual Studio 2013的命令列,輸入以下命令:(需要將命令中的<CertificateName>替換成自己的證書名稱)

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

 

2 在客戶端主機上執行certmgr.msc,並在證書管理器中找到"個人"證書,並找到剛才建立的證書。右鍵點選該證書,選擇匯出,在之後的匯出證書嚮導中,選擇"不要匯出私鑰",證書格式選擇DER X.509。

 

 

3 開啟Azure管理portal網頁,在左邊的導航選單中找到"設定",在設定選單中點選"管理證書",並選擇上載剛才匯出的不含私鑰的證書。上傳成功後會在portal上看到這個證書,並且還列出了訂閱ID和指紋。訂閱ID和指紋在後面的程式碼中會用到。

 

 

 

 

證書上傳的工作已經完成,下面就可以進行呼叫REST API的程式碼開發工作。

這裡使用VS2013新建一個控制檯應用程式來做演示。需要配合附件《CreateVM_API.rar》中的程式碼來閱讀此文件。

 

 

 

呼叫API

在VS2013中開啟專案"CreateVM_API",主要會用到三個檔案:

Program.cs 這是專案的主要程式檔案,其中已包含了讀取本地的證書,需要將剛才在Azure Portal上看到的指紋字串替換掉程式碼中的"certificateThumbprint"。還需要替換URI字串中的一些引數,後面會說明。

RequestBody.xml 這是用於新建部署的請求正文

AddVM.xml 這是用於在已有部署中增加虛擬機器的請求正文

 

這裡需要補充說明一下,在使用REST API建立虛擬機器的時候需要遵守以下步驟:

建立雲服務和儲存賬戶

在雲服務下建立一個部署槽

在部署槽中新增一臺虛擬機器

 

程式碼中用了兩個例子來演示以上步驟,這裡對這兩個例子做一下解釋。

 

 

示例1

 

在未部署虛擬機器的雲服務中建立部署槽並建立虛擬機器

需要呼叫以下REST API

 

"https://management.core.chinacloudapi.cn/{0}/services/hostedservices/{1}/deployments

這裡也就是Program.cs的Main函式中定義的URI。

用訂閱ID替換{0}

用雲服務的名稱替換{1}

 

再將剛才在Azure Portal上看到的指紋字串替換掉程式碼中的"certificateThumbprint"

 

隨後我們需要對示例程式碼中的RequestBody.xml進行相應的修改。

<Name>部署槽的名稱</Name> 之後向部署中新增虛擬機器時會用到 對應下圖中紅框所示部分

<Label>部署槽標籤</Label> 用於標識該部署槽,對應下圖藍框部分

 

 

 

 

<RoleName>角色名稱</RoleName>也就是在Azure Portal中看到的虛擬機器的名稱

<ComputerName>計算機名稱</ComputerName>虛擬機器內的作業系統的計算機名稱

<AdminPassword>管理員密碼</AdminPassword>虛擬機器的作業系統的管理員密碼,需要遵守所建立的作業系統的預設密碼複雜性規則。管理員名稱預設為administrator。

 

然後需要處理一下虛擬機器的埠對映,以便遠端桌面之類的工具可以訪問我們的虛擬機器。

<LocalPort>虛擬機器的埠</LocalPort>也就是內網埠

<Name>埠對映規則的名稱</Name>每個虛擬機器埠對映條目都要指定一個名稱

<Port>雲服務埠</Port>也就是外網埠

<Protocol>協議型別</Protocol>只能輸入TCP或UDP

 

然後需要選擇虛擬機器的作業系統映像

<SourceImageName>55bc2b193643443bb879a78bda516fc8__Windows-Server-2012-R2-201502.01-zh.cn-127GB.vhd</SourceImageName>

這裡的值是由Azure提供的,可以通過REST API或者Powershell命令來獲取當前Azure提供的作業系統映象。

https://msdn.microsoft.com/zh-cn/library/azure/jj157191.aspx

 

 

 

最後選擇儲存該映象的路徑,需要儲存到已存在的儲存賬戶中

<MediaLink>https://{0}.blob.core.chinacloudapi.cn/vhds/{1}.vhd</MediaLink>將{0}替換成儲存賬戶名稱,將{1}替換成想要儲存的檔名稱,儘量只使用小寫字幕和數字來設定檔名。

 

隨後即可執行程式碼。

 

 

 

示例2

 

在已部署了虛擬機器的雲服務中建立虛擬機器

 

需要呼叫以下API:

https://management.core.chinacloudapi.cn/{0}/services/hostedservices/{1}/deployments/{2}/roles

這裡也就是Program.cs的Main函式中定義的第二個URI。

用訂閱ID替換{0}

用雲服務的名稱替換{1}

用部署名稱替換{2}。部署名稱就是RequestBody.xml中的<Name>部署槽的名稱</Name>,也可以通過Azure Portal,在雲服務的儀表板中找到部署名稱。

 

再將剛才在Azure Portal上看到的指紋字串替換掉程式碼中的"certificateThumbprint"

 

隨後我們需要對示例程式碼中的addVM.xml進行相應的修改就可執行程式碼。需要修改的內容和RequestBody.xml基本一致,只是不能有<Name>和 <Label> 這兩個屬性。

 

相關文章