2015-11-16 57 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'这不是什么流浪文件 –