Vagrant 从文件中获取VirtualBox id(uuid)

Vagrant 从文件中获取VirtualBox id(uuid),vagrant,virtualbox,Vagrant,Virtualbox,我试图从一个新创建的vm的文件中发现它的uuid。我知道价值在某处,但我似乎无法挖掘出来 该值将在嵌入的VBoxManage命令中使用: %x(VBoxManage guestproperty get{vm.id})/VirtualBox/GuestInfo/Net/1/V4/IP) 两种可能的解决办法: 首先,只需为VM设置一个唯一的名称并使用该名称: v.customize[“modifyvm”,:id,“--name”,“我唯一的VM名称”] 第二,可能正在阅读.vagrant/mac

我试图从一个新创建的vm的文件中发现它的uuid。我知道价值在某处,但我似乎无法挖掘出来

该值将在嵌入的
VBoxManage
命令中使用:

%x(VBoxManage guestproperty get{vm.id})/VirtualBox/GuestInfo/Net/1/V4/IP)
两种可能的解决办法:

首先,只需为VM设置一个唯一的名称并使用该名称:

v.customize[“modifyvm”,:id,“--name”,“我唯一的VM名称”]
第二,可能正在阅读
.vagrant/machines/default/virtualbox/id
的内容,尽管这感觉有点糟糕

第二,可能正在阅读 .vagrant/machines/default/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"

id
已经在Vagrant的
vm
对象中的某个位置。有几个插件能够公开该值,因此从磁盘读回该值感觉像是一种黑客行为。插件可以访问
@ENV
machine
machine.id
确实,我不确定您是否可以(没有足够的ruby经验)。另外,如果您可以从vagrant文件访问
id
,则不需要传递每个提供者特定的
“modifyvm”:id--name
参数,但您可以执行
vb.id=xxx
,这不是vagrant文档所要的