vagrant up時に自動でwebcamを認識させるVagrantfileを書く

やりたいこと

virtualboxのboxにwebカメラを認識させるには

> vboxmanage controlvm {machine_id} webcam attach .1

のようにmachine idを指定してスクリプトを実行する必要がある。これをVagrantfileの中で行うことができれば、vagrant upすれば自動でウェブカメラを認識させることができるので、そのやり方。

環境

やり方

以下のコードをVagrantfileの途中に追加する。ウェブカメラのalias(.1の部分)は適宜変更。

  config.trigger.after [:up, :reload]  do |trigger|
    trigger.ruby do |env,machine|
      puts `vboxmanage controlvm #{machine.id} webcam attach .1`
    end
  end

終わり!

ネットではrubyFileクラスを使ってidを.vagrantフォルダにあるファイルから読み込んでいる記事があったが、それだと初回起動時に

Vagrantfile:66:in `read': No such file or directory @ rb_sysopen - .vagrant\machines\default\virtualbox\id (Errno::ENOENT)

のエラーが出てしまう。

感想

VagrantFileってRubyだったんだ!

最近rubyをよく見かけるので、Rubyの勉強をしたほうがいい気がしてきた。

参考

www.vagrantup.com

docs.oracle.com

qiita.com