我有多个Vagrant框,并希望查看哪个版本的框在哪个目录中运行
vagrant box list
返回一个全局框列表:
puphpet/centos65-x64 (virtualbox, 1.2.1)
puphpet/centos65-x64 (virtualbox, 2.0)
vagrant global-status
显示包含提供者的目录:
id name provider state directory
--------------------------------------------------
a427238 default virtualbox poweroff /path/to/dir1
fa21751 default virtualbox running /path/to/dir2
但我如何才能看到哪个Vagrant盒子版本在哪个目录中使用?
答案 0 :(得分:8)
据我所知,这些数据可以通过Vagrant CLI进行检索,但不会公开。看一下~/.vagrant.d/data/machine-index/index
的Linux或macOS,我认为它类似于Windows上的C:\Users\whoever\.vagrant.d\data\machine-index
。
您将获得一些未格式化的JSON,其中包含Vagrant所知道的每台机器的详细信息。如果您通过漂亮的打印机/美化器运行JSON,您将获得每台机器中的一个:
"d62342a255436211725abe8fd3c313ea": {
"local_data_path": "/Users/whoever/mymachine/.vagrant",
"name": "default",
"provider": "virtualbox",
"state": "poweroff",
"vagrantfile_name": null,
"vagrantfile_path": "/Users/whoever/mymachine",
"updated_at": null,
"extra_data": {
"box": {
"name": "ubuntu/xenial64",
"provider": "virtualbox",
"version": "20170706.0.0"
}
}
},
与您的机器相关的盒子信息就在那里。 ubuntu/xenial64
提供商版本virtualbox
上的20170706.0.0
框。
答案 1 :(得分:1)
这是一个旧线程,但是最近我遇到了与原始请求匹配的情况,并且发现了未在此处列出的答案:
vagrant box outdated
命令在测试是否有较新版本的盒子时列出了当前盒子的版本号。
需要注意的是,vagrant box outdated
命令需要访问Internet才能检查当前版本,并输出该版本。
只有在编写了使用bash
在jq
文件中搜索当前目录的~/.vagrant.d/data/machine-index/index
脚本后,我才发现了这一点。我不能保证这会在您的环境中起作用:
$ cat ~/scripts/vagrant_box_info.sh
#!/bin/bash
CUR_DIR=`pwd`
JQ_CMD='.machines|to_entries|map(select(.value.vagrantfile_path|test("'$CUR_DIR'$")))[].value.extra_data'
cat ~/.vagrant.d/data/machine-index/index | jq "$JQ_CMD"
$ ~/scripts/vagrant_box_info.sh
{
"box": {
"name": "geerlingguy/centos7",
"provider": "virtualbox",
"version": "1.2.15"
}
}
$