3

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

我一直专注于重组 vApp 以向其添加 vm。下面的示例将添加一个 vm,但直到它被创建后我才想出配置它。具体来说,我想设置 vm 的 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>

创建虚拟机后,我可以重新配置它,但网络设置或主机名实际上都没有改变。vCloud Director UI 告诉我它们已更改,但查看来宾操作系统显示设置未更改。

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

<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 后有效地配置它的设置。工作 XML 示例将是惊人的,但我仍然会感谢其他形式的帮助。

4

2 回答 2

0

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

于 2015-01-30T12:56:05.020 回答
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>
于 2015-01-02T21:08:30.300 回答