如何访问 vagrantfile 中的可用框列表
How to access the list of available boxes in a 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 开始,但在您配置第一个虚拟机后,您可以执行以下操作:
vagrant package --base my/custombox
或类似的东西,从那里开始将这个作为基础框。
available_boxes= `vagrant box list`.gsub(/\s+\(.*\)\n/,"\n").split("\n")
vagrant box list
运行一个子 shell 来列出可用的框,gsub(/\s+\(.*\)\n/,"\n")
使用模式匹配替换处理输出,因此我们每行得到一个框名称,.split("\n")
将字符串拆分为每行命令输出的数组元素。
正则表达式分解如下:\s+
(一个或多个空格)、\(.*\)
(后跟括号内的任何字符)和\n
(后跟一个换行符)。
我正在尝试根据可用的内容在两个不同的框之间切换,从而使我的 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 开始,但在您配置第一个虚拟机后,您可以执行以下操作:
vagrant package --base my/custombox
或类似的东西,从那里开始将这个作为基础框。
available_boxes= `vagrant box list`.gsub(/\s+\(.*\)\n/,"\n").split("\n")
vagrant box list
运行一个子 shell 来列出可用的框,gsub(/\s+\(.*\)\n/,"\n")
使用模式匹配替换处理输出,因此我们每行得到一个框名称,.split("\n")
将字符串拆分为每行命令输出的数组元素。
正则表达式分解如下:\s+
(一个或多个空格)、\(.*\)
(后跟括号内的任何字符)和\n
(后跟一个换行符)。