vCloud: создание и настройка виртуальной машины в vApp
Я пытаюсь развернуть виртуальные машины из шаблона в vApp с помощью vCloud rest API. Я чувствую, что должен быть способ настроить vm, поскольку я его порождаю (так как интерфейс, кажется, делает это), но не нашел способа.
Я сосредоточил свои усилия на перекомпоновке 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>
После создания виртуальной машины я могу перенастроить ее, но ни сетевые настройки, ни имя хоста фактически не меняются. Пользовательский интерфейс vCloud Director говорит мне, что они изменились, но просмотр гостевой ОС показывает, что настройки не изменились.
Пример изменения имени хоста (не работает):
<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>
Кто-нибудь смог настроить виртуальную машину при ее развертывании. В противном случае кто-нибудь знает, как эффективно настроить параметры виртуальной машины после ее развертывания. Работать с примерами XML было бы замечательно, но я все равно буду благодарен за помощь в других формах.
2 ответа
Просто используйте SDK для этой задачи. Загрузите пример и библиотеку. Добавьте библиотеку в proj и оттуда вызовите функцию. В SDK уже есть и библиотека Utility, которая обрабатывает HTTP-связь с vcloud, создавая запросы и обслуживая ответы с помощью сериализации. Если вы действительно хотите выполнить запрос самостоятельно, просто запустите пример в SDK, чтобы Fiddler следил за сообщением, получал точный запрос и воспроизводил его. Я знаю, потому что в первый раз я начал делать http запрос с использованием документации и попал в беду.
Самое близкое, к чему я смог это сделать, - это развернуть 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>