読者です 読者をやめる 読者になる 読者になる

Vagrant のプラグイン開発を VMware Fusion でやる

  • vagrant-vmware-fusion を入れてライセンスを有効にするには vagrant plugin を使う必要がある。
  • vagrant plugin はインストーラ版 Vagrant が抱え込んだ Gem リポジトリ環境で動く。
  • プラグインを作るときの vagrant はプラグインの Bundler 環境で動く。

あれ…?。ということで調べると

scalefactory/vagrant-cucumber · GitHub

の Gemfile に答えがあった。

Mac の場合です

インストーラから入れた Vagrant で vagrant-vmware-fusion をインストールし、ライセンスも登録する。

インストーラから入れた Vagrant が持っている ruby のバージョンを確認する。

$ /Applications/Vagrant/embedded/bin/ruby -v
ruby 2.0.0p353

そのバージョンの ruby を入れる。

$ rbenv install 2.0.0p353
$ echo 2.0.0p353 > .ruby_version
$ gem update --system
$ bundle install

vagrant plugin コマンドは使えないので、ライセンスインストールとして vagrant-vmware-fusion gem の場所にシンボリックリンクを二つ作る。

$ cd $HOME/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/vagrant-vmware-fusion-2.5.2
$ ln -s $HOME/.vagrant.d/license-vagrant-vmware-fusion.lic license-vagrant-vmware-fusion.lic
$ ln -s /Applications/Vagrant/embedded/rgloader rgloader

すると使える。

$ bundle exec vagrant status
Your Gemfile lists the gem vagrant-centos7_fix (>= 0) more than once.
You should probably keep only one of them.
While it's not a problem now, it could cause errors if you change the version of just one of them later.
Vagrant appears to be running in a Bundler environment. Your
existing Gemfile will be used. Vagrant will not auto-load any plugins
installed with `vagrant plugin`. Vagrant will autoload any plugins in
the 'plugins' group in your Gemfile. You can force Vagrant to take over
with VAGRANT_FORCE_BUNDLER.

You appear to be running Vagrant outside of the official installers.
Note that the installers are what ensure that Vagrant has all required
dependencies, and Vagrant assumes that these dependencies exist. By
running outside of the installer environment, Vagrant may not function
properly. To remove this warning, install Vagrant using one of the
official packages from vagrantup.com.

Current machine states:

default                   poweroff (virtualbox)

The VM is powered off. To restart the VM, simply run `vagrant up`