2014-02-05 17 views
1

我需要在導入之前或剛剛運行第一次之前,在創建的VM上執行一些自定義操作。例如,我需要清除過時的NAT端口轉發規則,這些規則往往會留在名稱相同的盒子後面,刪除一些磁盤控制器(將現有磁盤重新連接到IDE控制器而不是SATA,以便與舊版操作系統版本不兼容等)。在Vagrant中運行導入前自定義

在Vagrant代碼中有pre-bootpre-import事件,但我不知道在引導創建的虛擬機之前是否有任何方式運行一些virtualbox/vagrant命令?

回答

2

是的,要運行VBoxManage命令,請參閱「VBoxManage Customizations」一章in the docs。這些命令在默認情況下pre-boot階段運行,但你也可以指定階段的第一個參數:

Vagrant.configure("2") do |config| 
    # ... 

    config.vm.provider "virtualbox" do |v| 
    v.customize "pre-boot", ["modifyvm", :id, "--cpus", 2] 
    end 
end 

但我認爲問題是,你沒有一個簡單和可靠的方式來獲得磁盤圖像路徑。

+0

實際上找到磁盤很簡單:http://dpaste.com/1587145/。發現磁盤UUID應該足夠好,我測試了vboxmanage存儲相關的cmds接受存儲UUID。 – LetMeSOThat4U

+0

啊,真好!流浪者甚至可能會支持一些':disk_uuid'魔法。 – tmatilai

+0

@約翰,你可以重新發布之前在dpaste上的任何內容,可能作爲一個要點或更持久的東西?遇到操作系統UUID與VBoxManage報告不匹配的問題,因此試圖調和這兩者。 – mway