【发布时间】:2016-06-27 14:03:38
【问题描述】:
我正在将 Vagrant 用于虚拟机,并想开始创建自己的基本盒子来尝试匹配生产环境。
我已经使用 VMware Fusion Pro 8.1.1 创建了一个普通的 Debian 基础框,并且我已经能够add 该框,但我想开始使用框 metadata.json 来设置版本号。我在vagrant doc 中读到,唯一需要的密钥是"provider",效果很好,但是当我vagrant box list 时,我得到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'...
如果我遵循文档并使用 "version":"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"
}
]
}
]
}
当我转到 add 框时出现错误。这是一些输出(它会继续以from 提供更多详细信息)
$ vagrant box add work-debian7-11-64 debian-7.11-64.vmware.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'work-debian7-11-64' (v0) for provider:
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
/opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/box_collection.rb:155:in `block (3 levels) in add': undefined method `to_sym' for nil:NilClass (NoMethodError)
这是我的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 的格式是否有问题?当我只使用 provider 键时,box add 可以正常工作。我知道有 Altas 和 Packer,但我想在本地尝试一下。
【问题讨论】:
标签: vagrant metadata vmware-fusion