4

我有一个名为 package.box 的自定义框。我在尝试 vagrant up 时收到此错误,vagrant box add。我创建了一个具有不同配置但没有运气的 metadata.json 文件。我不明白这个消息。我使用 virtualbox 进行配置。

我不了解他们网站上有关 metadata.json 文件的文档。

找不到框“package.box”的“metadata.json”文件。
盒子需要这个文件,以便 Vagrant 确定
它的提供者。如果您制作了盒子,请向其中添加
“metadata.json”文件。如果其他人制作了盒子,请
通知盒子创建者盒子已损坏。
可以在以下 URL 中找到 box 文件格式的文档:
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。

4

2 回答 2

4

package.box文件是您的 VM 的 zip 文件,该metadata.json文件不能在 package.box 文件的旁边,而是在其中。

因此,在打包之前将元数据文件存储在 VM 文件旁边,例如

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

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

于 2016-07-26T21:03:18.543 回答
0

免责声明:这不是一个答案,而是一个后续问题。

这看起来与我遇到的问题一模一样。因为我无法从 Artifactory 获取 metadata.json。

如何将 metadata.json 打包到 .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"
    }
  ]

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

完成:

"post-processors": [
    [
      {
        "output": "builds/devbox.box",
        "type": "vagrant"
      }
    ]
  ]
于 2021-07-14T08:31:08.943 回答