Скриптинг Virtualbox для создания сетей - PullRequest
4 голосов
/ 08 ноября 2011

Я знаю, что VB предлагает много вещей для управления им: SDK, API, COM, веб-сервер и т. Д.

Я хотел бы иметь графический интерфейс для простого создания виртуальной машины, подключенной через сети, но у меня естьзнать: Какое лучшее решение использовать Frontends [1], веб-сервер, COM * или API?в другом месте libvirt?

Примером использования может быть: Я установил 3 виртуальные машины в моем графическом интерфейсе, выбрал соответствующую ОС, создал 1 или более сетевых подключений для каждой и подключил эти виртуальные машины ксоздать сеть (ы).

Python, C ++ и т. Д., Язык реализации не имеет значения.

[1] http://www.virtualbox.org/manual/ch01.html#frontends

1 Ответ

4 голосов
/ 29 декабря 2011

Моя квалификация для ответа на то, что я создал и поддерживал Vagrant с начала 2010 года. Вот мое общее мнение о каждом из доступных интерфейсов для сценариев VirtualBox:

  • vboxwebsrv - это веб-сервис VirtualBox, который предоставляет API для управления VirtualBox. Преимущество этого в том, что веб-сервисы в настоящее время легко программировать. Основным недостатком является то, что вы должны обрабатывать запуск и остановку этого веб-сервиса вручную (или проверить, чтобы убедиться, что он уже запущен). Исторически веб-сервис не был полностью обновлен с последними API, доступными в каждой версии VirtualBox, но я не уверен, каков его статус сегодня.

  • COM or C API. VirtualBox предоставляет API на основе XPCOM для платформ, отличных от Windows, и API на основе MSCOM для Windows. Если вы не можете использовать C ++, вы также можете использовать C API в Linux (но он не доступен / не экспортируется в Windows). Я использовал этот API более года. Плюсы: быстро и полно. Поскольку это API C, он очень быстрый, напрямую взаимодействуя с процессом VirtualBox. Он также завершен, поскольку это тот же API, который используется в VirtualBox GUI, а также для внутреннего использования. Основным недостатком является то, что XPCOM не легок, а C API недоступен в Windows, что означает, что вам либо придется пережить XPCOM, либо вам нужно работать как с C, так и с MSCOM. Я выбрал последнее, и это оказалось кошмаром совместимости. Почти каждый дополнительный выпуск VirtualBox (3.1, 3.2 и т. Д.) Будет изменять API обратно несовместимым образом (слегка) и основной выпуск, о котором вы можете полностью забыть (3.0, 4.0 и т. Д.). Это делает обработку старых версий VirtualBox ... хитрой. Это, безусловно, расширенный вариант использования.

  • VBoxManage является интерфейсом на основе CLI для VirtualBox. Под обложками VBoxManage, конечно, просто использует API на основе COM, но обеспечивает гораздо более удобную оболочку поверх него. Я обнаружил, что для 99% случаев использования VBoxManage может покрыть это. VBoxManage также обрабатывает все ошибки, правильно отображает состояние выхода (0 для успеха, ненулевое значение для всего остального) и т. Д. После 1,5 лет использования C API я вернулся к VBoxManage, потому что его проще использовать и он делает то, что я нужно сделать. Недостатком является то, что вы должны использовать подпроцесс для общения с VBoxManage. Положительным моментом является то, что VBoxManage изменяется сравнительно редко, и поэтому очень облегчает поддержку многих версий VirtualBox.

Надеюсь, это поможет!

...