使用json文件中的box版本设置的vagrant setup virtualbox name

时间:2015-09-16 11:47:11

标签: vagrant virtualbox

我们的项目中有一个Vagrantfile,它被配置为将元数据json作为box_url获取。

在此元数据json中,我们列出了所有可用的框(不同的版本和/或提供者),如here所述

如果我们执行 public function AddReseller($name,$businessName,$businessPageName,$contactNumber,$fullAddress,$email) { $db = new Mysqlidb(); if(!$db) die("Database error"); $data = Array( 'Name' => $name, 'BusinessName' => $businessName, 'Address' => $fullAddress, 'ContactNumber'=>$contactNumber, 'Email'=>$email, 'PageName'=>$businessPageName ); if($email > 0) { echo "Email Exists Already"; } $id = $db->insert ('tenterprise', $data); return $id; } ,那么vagrant会创建一个名称为vagrant up

的virtuelbox

我现在设置了一个自定义虚拟箱名,如下所示:

<currentfoldername>_default_<timestamp>

但我想要以下虚拟机名称:

  

my-project(centos-67-x64) - 1.0.0

版本应来自metadata.json中的version属性。

有可能吗? 我没有找到关于这个主题的信息,我想知道,没有其他用户,有这个问题。

1 个答案:

答案 0 :(得分:0)

如果我理解你,那就是从ruby读取json文件。

以您指出的示例为例,metadata.json文件类似于

{
  "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"
    }]
  }]
}

所以你想要version信息。那么Vagrantfile就像是

require 'json'

file = File.read('metadata.json')
data_hash = JSON.parse(file)
version = data_hash['versions'][0]['version']

Vagrant.configure(2) do |config|

  <blablabla>

  config.vm.provider "virtualbox" do |vb|
    vb.name = "my-project (centos-67-x64) - " + version
  end
end