我试图通过在两个不同的框之间切换来使我的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
或类似的东西,从那里开始作为基础框。
答案 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
(后跟换行符)。