使用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> 这两个属性。

相关文章
相关标签/搜索