如何访问vagrantfile中的可用框列表

时间:2015-03-08 01:26:28

标签: vagrant vagrantfile

我试图通过在两个不同的框之间切换来使我的Vagrantfile变得更聪明,具体取决于可用的内容。

我希望能够从ubuntu / trusty创建一个盒子,并使用Puppet配置它(已经完成),但是我想打包那个盒子并使用这个盒子创建更多的机器作为起点。

我正在思考以下几点:

available_boxes = <your answer here>
if available_boxes.include? 'my/custombox'
    config.vm.box = 'my/custombox'
else
    config.vm.box = 'ubuntu/trusty'
end

这是第一次从ubuntu / trusty开始,但是在您配置了第一个vm后,您可以这样做:

vagrant package --base my/custombox

或类似的东西,从那里开始作为基础框。

1 个答案:

答案 0 :(得分:2)

 available_boxes= `vagrant box list`.gsub(/\s+\(.*\)\n/,"\n").split("\n")

vagrant box list运行子shell以列出可用的框,gsub(/\s+\(.*\)\n/,"\n")使用模式匹配替换处理输出,因此我们每行得到一个框名称,.split("\n")将字符串拆分为数组每行命令输出的元素。

正则表达式分解如下:\s+(一个或多个空格),\(.*\)(后跟括号内的任何字符)和\n(后跟换行符)。