我正在尝试使用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示例会很棒,但我仍然会感谢其他形式的帮助。
答案 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请求并遇到麻烦。