2011-11-08 70 views
4

我知道,VB提供了很多的東西來控制它:SDK,API,COM​​,Web服務器等腳本VirtualBox的創建網絡

我想要做的是有一個GUI簡單地創建連接,通過網絡VM但我必須知道:什麼是最好的解決方案使用前端[1],網絡服務器,COM *或API?其他地方libvirt?

用例可能是這樣的:我在GUI上放置3個虛擬機,選擇其各自的操作系統,爲每個虛擬機創建1個或多個網絡連接,並連接這些虛擬機以創建網絡。

Python,C++等,實現語言並不重要。

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

+0

好吧,我想我已經等待足夠多,看到米切爾你的答案正是我需要知道的,我不認爲可以給出更好的答案。 – dlewin

回答

4

我的資格回答這個問題的存在,我自2010年初這裏是我對每一個腳本VirtualBox的可用前端的一般意見創建並一直保持Vagrant

  • vboxwebsrv是VirtualBox Web服務,它提供了一個控制VirtualBox的API。這就是爲什麼現在Web服務很容易編程。主要的意義是你必須手動處理啓動和停止這個Web服務(或檢查以確保它已經在運行)。從歷史上看,Web服務並沒有完全實時更新每個VirtualBox版本中的最新API,但我不確定今天的狀態如何。

  • COM or C API。 VirtualBox在非Windows平臺上提供基於XPCOM的API,在Windows上提供基於MSCOM的API。如果你不能使用C++,你也可以在Linux上使用C API(但它在Windows上不可用/導出)。我使用了這個API超過一年。優點:快速和完整。由於它是一個C API,因此速度非常快,可直接與VirtualBox進程通信。它也是完整的,因爲這與VirtualBox GUI使用的以及內部使用的API相同。主要原因是XPCOM不容易,C API在Windows上不可用,這意味着您必須通過XPCOM來痛苦,或者您需要同時處理C和MSCOM。我選擇了後者,結果是兼容性的噩夢。幾乎VirtualBox(3.1,3.2等)的每一個次要版本都會以一種向後不兼容的方式(略)和一個主要版本來改變API,你完全可以忘記(3.0,4.0等等)。這使得處理舊版本的VirtualBox變得棘手。這絕對是一個先進的用例。

  • VBoxManage是基於CLI的VirtualBox前端。 VBoxManage當然只是使用基於COM的API,但它提供了更方便用戶的封面。我發現對於99%的用例,VBoxManage可以覆蓋它。 VBoxManage還可以處理所有的錯誤處理,確保退出狀態正確(0表示成功,其他所有表示不爲零)等等。經過1.5年的C API,我已經切換回VBoxManage,因爲它更簡單易用,需要做。缺點是你必須使用子過程來與VBoxManage對話。好處是VBoxManage的變化相對較少,因此可以很容易地支持許多版本的VirtualBox。

我希望這有助於!