使用Azure REST API建立虛擬機

                                                                Hollis Yao, Shihao Rong 

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

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

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

 

另外須要注意的是,因爲國內的Azure是獨立運營的,所以調用API時,須要將MSDN代碼中的https://management.core.windows.net函數

替換成:工具

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

 

隨後須要在調用API的客戶端主機上安裝證書並上傳到Azure Portal。操作系統

安裝並上傳證書。

步驟以下:.net

1 使用Visual Studio 2013的命令行,輸入如下命令:(須要將命令中的<CertificateName>替換成本身的證書名稱)命令行

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

 

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> 這兩個屬性。

相關文章
相關標籤/搜索