如何使用“metadata.json”文件设置使用VMware Fusion创建的Vagrant box的版本?

如何使用“metadata.json”文件设置使用VMware Fusion创建的Vagrant box的版本?,vagrant,metadata,vmware-fusion,Vagrant,Metadata,Vmware Fusion,我正在为虚拟机使用Vagrant,并希望开始创建自己的基本框,以尝试匹配生产环境 我已经使用VMware Fusion Pro 8.1.1创建了一个普通的Debian base box,并且我能够添加该box,但是我想开始使用box metadata.json来设置版本号。我在中读到唯一需要的键是“provider”,这非常有效,但是当我流浪者框列表时,我得到v0 work-debian7-11-64 (vmware_fusion, 0) 当我删除一个更新的metad

我正在为虚拟机使用Vagrant,并希望开始创建自己的基本框,以尝试匹配生产环境

我已经使用VMware Fusion Pro 8.1.1创建了一个普通的Debian base box,并且我能够
添加该box,但是我想开始使用box metadata.json来设置版本号。我在中读到唯一需要的键是
“provider”
,这非常有效,但是当我
流浪者框列表时,我得到
v0

work-debian7-11-64              (vmware_fusion, 0)
当我删除一个更新的
metadata.json
文件并重试时,我可以看到它

$ vagrant box remove work-debian7-11-64
Removing box 'work-debian7-11-64' (v0) with provider 'vmware_fusion'...
如果我按照文档使用
“版本”:“0.1.0”
类似于:

{
  "name": "hashicorp/precise64",
  "description": "This box contains Ubuntu 12.04 LTS 64-bit.",
  "versions": [
    {
      "version": "0.1.0",
      "providers": [
        {
          "name": "virtualbox",
          "url": "http://somewhere.com/precise64_010_virtualbox.box",
          "checksum_type": "sha1",
          "checksum": "foo"
        }
      ]
    }
  ]
}
当我转到
添加
框时,我最终出现了一个错误。这是输出的一部分(接着是来自
的更多细节)

这是我的
metadata.json
文件:

{
  "name": "workalicious/debian7-11-64",
  "description": "Debian 7.11.0 64-bit web server.",
  "versions": [{
    "version": "0.1.0",
    "providers": [{
        "name": "vmware_fusion"
        }]
    }]
}

我想知道是不是我在
metadata.json
的格式上做错了什么?当我只使用
提供程序
添加框时
不会出错。我知道有Altas和Packer,但我想在本地尝试一下。

我相信我现在对这本书有了更好的理解,读得很慢

我应该在
.box
中包含一个metadata.json文件,该文件至少有一个提供程序,这是必需的

在归档文件中,Vagrant需要一个文件:metadata.json。这是一个JSON文件,与上面的box catalog元数据组件完全无关;每个box文件(在box文件内)只有一个metadata.json,而一个目录元数据json文档可以描述同一个box的多个版本,可能跨越多个提供者

metadata.json必须至少包含“provider”键和框中的提供程序。Vagrant使用它来验证盒子的提供者。例如,如果您的框用于VirtualBox,那么metadata.json将如下所示:

如果没有metadata.json文件,或者该文件不包含至少具有“provider”键的有效json,则Vagrant在添加框时将出错,因为它无法验证提供程序

其他键/值可以毫无疑问地添加到元数据中。元数据文件的值被不透明地传递到Vagrant中,插件可以利用它。此时,Vagrant core不使用此文件中的任何其他密钥

这是第1部分(BOX文件),
metadata.json
文件,位于
.vmwarevm
目录中。第2部分(框元数据)包含另一个METADATA.json文件,其中包含名称、版本、url、校验和和键。。。从文档:

元数据是框(但强烈建议)的可选组件,支持版本控制、更新、单个文件中的多个提供程序等

现在有一个框
metadata.json
,可以在
vagrant框添加过程中引用它

$ vagrant box add metadata.json --provider vmware_fusion
==> box: Loading metadata for box 'metadata.json'
    box: URL: file:///Users/dave/Code/code_resources/vagrant_examples/vagrant-bird-box-vmware-debian-nodesktop/metadata.json
==> box: Adding box 'workalicious/debian71164' (v0.1.0) for provider: vmware_fusion
    box: Unpacking necessary files from: file:///Users/dave/Code/code_resources/vagrant_examples/vagrant-bird-box-vmware-debian-nodesktop/debian-7.11-64.vmware.box
    box: Calculating and comparing box checksum...
==> box: Successfully added box 'workalicious/debian71164' (v0.1.0) for 'vmware_fusion'!

也许这有助于其他人完成同样的工作流程。

FYI,要传递到
vagrant box add
的json文件可以有您喜欢的任何名称。如果可以,我会给您另外10+1的答案。
// metadata.json inside of WorkaliciousDebian7-64-nogui.vmwarevm
{
  "provider": "vmware_fusion"
}
// get the checksum
$ md5 debian-7.11-64.vmware.box 
MD5 (debian-7.11-64.vmware.box) = f1a2b7982031a1e53c1e39011f8d5f37

// metadata.json file used with the vagrant box add
{
  "name": "workalicious/debian71164",
  "description": "Debian 7.11.0 64-bit web server.",
  "versions": [
    {
      "version": "0.1.0",
      "providers": [
        {
          "name": "vmware_fusion",
          "url": "file:///Users/dave/Code/code_resources/vagrant_examples/vagrant-bird-box-vmware-debian-nodesktop/debian-7.11-64.vmware.box",
          "checksum_type": "md5",
          "checksum": "f1a2b7982031a1e53c1e39011f8d5f37"
        }
      ]
    }
  ]
}
$ vagrant box add metadata.json --provider vmware_fusion
==> box: Loading metadata for box 'metadata.json'
    box: URL: file:///Users/dave/Code/code_resources/vagrant_examples/vagrant-bird-box-vmware-debian-nodesktop/metadata.json
==> box: Adding box 'workalicious/debian71164' (v0.1.0) for provider: vmware_fusion
    box: Unpacking necessary files from: file:///Users/dave/Code/code_resources/vagrant_examples/vagrant-bird-box-vmware-debian-nodesktop/debian-7.11-64.vmware.box
    box: Calculating and comparing box checksum...
==> box: Successfully added box 'workalicious/debian71164' (v0.1.0) for 'vmware_fusion'!