Vagrant自定义框metadata.json文件

时间:2016-07-26 19:38:01

标签: ubuntu vagrant virtualbox vagrant-provision

我有一个名为package.box的自定义框。我试图流浪,流浪盒添加时出现此错误。我创建了一个不同配置的metadata.json文件,但没有运气。我不明白这个消息。我使用virtualbox进行配置。

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

  

找不到“package.box”框的“metadata.json”文件   框需要此文件才能让Vagrant确定   提供者它是为了。如果您制作了这个盒子,请添加一个   “metadata.json”文件。如果其他人制作了这个盒子,请你   通知盒子创建者盒子已损坏。文件为   箱式文件格式可在以下网址找到:
  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 个答案:

答案 0 :(得分:2)

package.box文件是您的VM的zip文件,metadata.json文件不能是package.box文件的下一个文件,而是在其中。

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

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

所以当你运行vagrant package时,它会将元数据文件包含在盒子文件中。

答案 1 :(得分: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"
      }
    ]
  ]