Vagrant 如何访问文件中可用框的列表
我试图通过在两个不同的盒子之间切换使我的文件更智能,这取决于可用的东西 我希望能够从ubuntu/trusty创建一个框,并使用Puppet(已经完成)对其进行配置,但是我希望打包该框,并以该框为起点创建更多的机器 我的想法大致如下:Vagrant 如何访问文件中可用框的列表,vagrant,vagrantfile,Vagrant,Vagrantfile,我试图通过在两个不同的盒子之间切换使我的文件更智能,这取决于可用的东西 我希望能够从ubuntu/trusty创建一个框,并使用Puppet(已经完成)对其进行配置,但是我希望打包该框,并以该框为起点创建更多的机器 我的想法大致如下: available_boxes = <your answer here> if available_boxes.include? 'my/custombox' config.vm.box = 'my/custombox' else co
available_boxes = <your answer here>
if available_boxes.include? 'my/custombox'
config.vm.box = 'my/custombox'
else
config.vm.box = 'ubuntu/trusty'
end
或者类似的东西,从这里开始,这一个被视为基础框
available_boxes= `vagrant box list`.gsub(/\s+\(.*\)\n/,"\n").split("\n")
vagrant box list
运行子shell以列出可用的框,gsub(/\s+\(.*\)\n/,“\n”)
使用模式匹配替换处理输出,因此我们每行获得一个框名,.split(“\n”)
为每行命令输出将字符串拆分为一个数组元素
正则表达式分解如下:
\s+
(一个或多个空格)、\(.*)
(后跟括号内的任何字符)和\n
(后跟换行符)。谢谢。我认为这将创建一个评估循环。但这很有魅力。不过,我想,这个解决方案只适用于像envs这样的linux?也许shell评估在windows中工作不好,但我无法测试它。不管怎样,它对我(Mac和Linux)都非常有用。我可以在windows下运行它,但我也安装了git bash。就我而言,这是一个糟糕的假设。似乎,但可能有一些事情是专门为流浪汉解决的。
available_boxes= `vagrant box list`.gsub(/\s+\(.*\)\n/,"\n").split("\n")