使用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》中的代碼來閱讀此文檔。
在VS2013中打開項目"CreateVM_API",主要會用到三個文件:
Program.cs 這是項目的主要程序文件,其中已包含了讀取本地的證書,須要將剛纔在Azure Portal上看到的指紋字符串替換掉代碼中的"certificateThumbprint"。還須要替換URI字符串中的一些參數,後面會說明。
RequestBody.xml 這是用於新建部署的請求正文
AddVM.xml 這是用於在已有部署中增長虛擬機的請求正文
這裏須要補充說明一下,在使用REST API建立虛擬機的時候須要遵照如下步驟:
建立雲服務和存儲帳戶
在雲服務下建立一個部署槽
在部署槽中添加一臺虛擬機
代碼中用了兩個例子來演示以上步驟,這裏對這兩個例子作一下解釋。
在未部署虛擬機的雲服務中建立部署槽並創建虛擬機
須要調用如下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}替換成想要保存的文件名稱,儘可能只使用小寫字幕和數字來設置文件名。
隨後便可運行代碼。
在已部署了虛擬機的雲服務中創建虛擬機
須要調用如下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> 這兩個屬性。