Vagrant を使って VirtualBox のバージョンを調べる
Vagrant 0.9, 1.0 系になってから、VirtualBox のバージョンの取得方法が変わってたので、
ちょっと困っていたのだが、ようやく分かった。
require 'rubygems' require 'vagrant' puts Vagrant::Driver::VirtualBox.new(nil).version
Vagrantfile 内だと require は不要。これで「Vagrant のベースBOX を更新する」で直書きしていたバージョンを動的に取得できるようになった。
Vagrant::Config.run do |config| config.vm.box = "squeeze" config.vm.provision :shell, :inline => 'sh /vagrant/bin/provision.sh ' + Vagrant::Driver::VirtualBox.new(nil).version end
あとは、こちらを参考に、Ruby スクリプトでVagrant を操作してベースBOXのパッケージ化するまで全自動でやってしまえるようになった。Vagrant 結構便利かも。
require 'rubygems' require 'vagrant' env = Vagrant::Environment.new box_name = env.primary_vm.box.name pkg_name = box_name + '-' + Time.now.strftime('%Y%m%d%H%M%S') + '.box' env.cli('up') env.cli('package', '--output', pkg_name) env.primary_vm.box.destroy env.cli('box', 'add', box_name, pkg_name) env.cli('destroy', '-f')
(ソースコードを読まないと分からないことが多いけどw)