Vagrant 自定义虚拟机镜像 metadata.json 文件

4
我有一个名为package.box的自定义盒子。当尝试vagrant up、vagrant box add时,会出现以下错误。我创建了一个不同配置的metadata.json文件,但没有成功。我不理解这个消息。我使用virtualbox进行配置。
我不理解他们网站上关于metadata.json文件的说明。
引用: 找不到盒子“package.box”的“metadata.json”文件。 为了让Vagrant确定提供程序,盒子需要此文件。 如果您制作了盒子,请将“metadata.json”文件添加到其中。 如果其他人制作了盒子,请通知盒子创建者该盒子已损坏。 可以在下面的URL中找到有关盒子文件格式的文档: https://www.vagrantup.com/docs/boxes/format.html package.box位于一个空目录中。我在它旁边放置了这个metadata.json文件:
{
    "description": "long box description",
    "short_description": "short box description",
    "name": "company/developer-environment",
    "versions": [{
        "version": "1",
        "status": "active",
        "description_html": "<p>Dev Environment</p>",
        "description_markdown": "Dev Environment",
        "providers": [{
            "name": "virtualbox",
            "url": "./package.box"
        }]
    }]
}

我使用的是Ubuntu 16.04系统,Vagrant 1.8.5和VirtualBox 5.0.26。

2个回答

4

package.box文件是您的虚拟机的压缩文件,metadata.json文件不能与package.box文件放在一起,而是要放在其中。

因此,在打包之前,请将元数据文件存储在虚拟机文件旁边,类似于:

.
|-- box-disk1.vmdk
|-- box.ovf
|-- metadata.json

当您运行vagrant package时,它将包括元数据文件作为盒子文件的一部分。

谢谢。重新打包盒子后,它正常工作了。我不知道为什么,但它起作用了。元数据文件一开始就存在。 - etudor
既然他已经给出了答案,那就毫不犹豫地将他的回复标记为答案。 - Adam

0
免责声明:这不是一个答案,而是一个后续问题。
看起来这正是我遇到的问题。由于无法从Artifactory获取metadata.json文件。
我该如何将metadata.json打包到我的.box文件中?
我有两个步骤创建我的box。
首先: 基础镜像生成一个*.vmdk和*.ovf文件
完成
"post-processors": [
    {
      "type": "artifice",
      "files": [
        "builds/{{.BuildName}}-{{.Provider}}-centos7.vmdk",
        "builds/{{.BuildName}}-{{.Provider}}-centos7.ovf"
      ]
    },
    {
      "type": "vagrant",
      "keep_input_artifact": true,
      "provider_override": "virtualbox"
    }
  ]

第二步:我将我的Web应用程序安装到镜像中,并生成*.box文件。

完成:

"post-processors": [
    [
      {
        "output": "builds/devbox.box",
        "type": "vagrant"
      }
    ]
  ]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接