2015-11-16 55 views
2

我想從其Vagrantfile中發現新創建的虛擬機的uuid。我知道價值在哪裏,但我似乎無法挖掘出來。從Vagrantfile獲取VirtualBox ID(uuid)

將在嵌入式VBoxManage命令中使用的值:

%x(VBoxManage guestproperty get #{vm.id} "/VirtualBox/GuestInfo/Net/1/V4/IP") 

兩個可能的解決方法:

首先,只需設置一個唯一的名稱爲虛擬機和使用:

v.customize ["modifyvm", :id, "--name", "My unique VM name"] 

其次,可能會讀.vagrant/machines/default/virtualbox/id的內容,雖然感覺有點可怕。

回答

1

其次,可能會被讀 .vagrant /機/默認/ VirtualBox虛擬/ ID的內容,但那種感覺那種 可怕。

爲什麼它可怕?該文件只包含ID其本身,因此沒有解析和文件是有每個提供商

這樣的事會工作直接

Vagrant.configure(2) do |config| 
    p "read id " + File.read(".vagrant/machines/default/vmware_fusion/index_uuid") 

這樣會給你

$ vagrant up 
"read id 678add84e58c4c918d498a2b629f30f7" 
+0

的' id'已經在Vagrant的'vm'對象中。有幾個插件可以暴露這個值,所以從磁盤讀取它就像是破解。 – joemaller

+1

井插件可以訪問'@ ENV'並確實訪問'machine'和'machine.id',我不確定你可以(沒有足夠的紅寶石經驗)。如果你有權訪問Vagrantfile的'id',你不需要爲每個提供者傳遞''modifyvm',:id --name'參數,但是你會做'vb.id = xxx'這不是什麼流浪文件 –