vCloud:在vApp中创建和配置vm

时间:2014-08-07 19:08:37

标签: vcloud-director-rest-api

我正在尝试使用vCloud rest API将虚拟机从模板部署到vApp中。我觉得应该有一种方法来配置vm,因为我正在产生它(因为UI似乎这样做了)但是还没找到方法。

我一直在集中精力重新组合vApp以向其添加vm。下面的例子将添加一个虚拟机,但我还没想到在创建之前配置虚拟机。具体来说,我想设置虚拟机的虚拟机名称,主机名和IP设置。

<?xml version="1.0" encoding="UTF-8"?>
<RecomposeVAppParams
   xmlns="http://www.vmware.com/vcloud/v1.5"
   xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1">
   <SourcedItem sourceDelete="false">
       <Source href="templateUri" />
   </SourcedItem>
   <AllEULAsAccepted>true</AllEULAsAccepted>
</RecomposeVAppParams>

创建vm后,我可以重新配置它,但网络设置或主机名实际上都没有改变。 vCloud Director UI告诉我他们已经更改但是查看来宾os显示设置没有更改。

更改主机名示例(不起作用):

<vcloud:GuestCustomizationSection
   xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
   href="vmUri/guestCustomizationSection/"
   ovf:required="false"
   type="application/vnd.vmware.vcloud.guestCustomizationSection+xml">
       <ovf:Info>Specifies Guest OS Customization Settings</ovf:Info>
       <vcloud:ComputerName>newName</vcloud:ComputerName>
</vcloud:GuestCustomizationSection>

在部署VM时,是否有人能够配置VM。否则,任何人都知道如何在部署VM后有效配置VM的设置。使用XML示例会很棒,但我仍然会感谢其他形式的帮助。

2 个答案:

答案 0 :(得分:0)

我能够做到的最接近的是从目录中部署vApp,在某个过程中对其进行自定义。这不是你要求的,但我希望它有所帮助。

<?xml version="1.0" encoding="UTF-8"?>
<InstantiateVAppTemplateParams
   xmlns="http://www.vmware.com/vcloud/v1.5"
   xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
   name="<MyVappName"
   deploy="false"
   powerOn="false">
   <Description>vApp I deployed through REST API...</Description>
   <InstantiationParams>
   <NetworkConfigSection>
    <ovf:Info>Configuration parameters for logical networks</ovf:Info>
    <NetworkConfig networkName="App-Network-1">
     <Configuration>
      <ParentNetwork href="https://vcd-url/api/network/331a8ee3-33fd-4e4a-878e-1a6dce772fea" />
      <FenceMode>bridged</FenceMode>
     </Configuration>
    </NetworkConfig>
   </NetworkConfigSection>
   </InstantiationParams>
   <Source
      href="https://vcd-url/api/vAppTemplate/vappTemplate-d11de298-3041-2ae2-5e81-3ac2b4255423" />
</InstantiateVAppTemplateParams>

答案 1 :(得分:0)

只需使用SDK执行此任务即可。下载示例和库。将库添加到proj并从那里调用函数。 SDK已经和Utility库一起处理与vcloud的http通信,创建请求并使用序列化来提供答案。 如果你真的想自己做请求,你只需在SDK中运行Fiddler中的示例来监视通信并获得确切的请求并重现它。 我知道,因为我第一次使用文档开始发出http请求并遇到麻烦。