我们的项目中有一个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
我现在设置了一个自定义虚拟箱名,如下所示:
<currentfoldername>_default_<timestamp>
但我想要以下虚拟机名称:
my-project(centos-67-x64) - 1.0.0
版本应来自metadata.json中的version属性。
有可能吗? 我没有找到关于这个主题的信息,我想知道,没有其他用户,有这个问题。
答案 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