WindowsでVagrantパッケージを入れたときにできることとVagrantfileをrakeで生成するアイディア
Vagrantが環境変数をセットする
インストーラで Vagrant を入れると Vagrant パッケージのディレクトリの中の
bin/
に PATH が通る。
そして vagrant コマンドを起動している間だけ
embedded/bin/
に PATH が通る。
そこに ruby, gem, rake があるので実は Vagrant を入れてあれば Rake タスクを実行できる。
これで Vagrantfile を直接置くのではなく Vagrantfile.erb から生成するといったことができる。
「よく似ているけど微妙に違う開発環境」を用意するために Vagrant を使おうとしている場合、これは便利に使えるかも。
例えば
Railsアプリの環境1 | 192.168.0.xx |
Railsアプリの環境2 | 192.168.0.yy |
Railsアプリの環境3 | 192.168.0.zz |
みたいなテーブルを Rakefile の中に持っておいて、微妙に違う設定を Vagrantfile に反映する、といったことができる。これで provisioning 用の Chef の cookbook はほとんど共通だけど、ちょっとだけパラメータを変えて実行したいという要求に応えやすい気がする。
vagrant_cmd plugin
Windows 環境で
vagrant plugin install vagrant_cmd
vagrant cmd
とすると上の環境変数をセットした状態の cmd ができあがる。
これで Vagrantfile 生成用に Rake を叩くことができる。
うむうむ。
少し注意が必要なのは、この追加される PATH の方が優先されるので、例えば
が入れてあってもこの環境では Vagrant で入れた Ruby が優先されるということ。分かっていればそうでもないが、慣れないとややこしい。
例えばこの plugin を入れていなくても vagrant コマンドの実行途中に ^C で break してしまうと環境変数を書き戻す処理が実行されずに PATH が書き変わったままになってしまう。これは分かっていないと混乱する。