開発環境をWindows8上のVMに作ります。基本的な手順と、普段Macを使っている自分が見たWindows向けの話など。

準備

 まずVagrantにRubyが必要なので、RubyInstaller for Windowsを使いインストールします。必要なのは1系だったので、1.9.3をインストールしました。
 必要なVagrantVirtualBoxをインストール。合わせて仮想マシンをリストから探して登録します。
$ vagrant box add <名前> < Available Boxes書いてあるURL>
適当なディレクトリを用意して初期化を行います。
$ vagrant init <名前>
それが完了したら、VMをマウントして完了です。
$ vagrant up
 VMにログインするには、Macならvagrant sshコマンド、Windowsならsshクライアントからログインを行います。設定は、host 127.0.0.1、port 2222、User vagrant、Password vagrant、です。

 なお、単に開発環境がほしい場合は完成したものを探すとよいでしょう。たとえばPHPの開発環境が欲しい場合にはこういったものを使えば、PHP、Nginx、MySQL、PHPUnitなどの環境がそろいます。
yandod/php5-nginx-vagrant-sample

Windowsの場合について

 Macでしか開発したことが無かったので、windowsに環境を用意する上でつまづいた点がありました。
・VirtualBoxでVMを動かすときに環境によってはBIOS設定を変更する必要がある。
・コンソールからsshできないので、sshクライアントをインストールする必要がある。

 まず1点目のBIOS設定です。セットアップ中、vagrant upが全く進まなくなる症状が出ました。これはVMが64bitOSを動かすのに仮想化支援機能を使うのですが、それが有効になっていなかったことが原因でした。有効にするにはBIOS設定の変更が必要です。 Windows の Vagrant で 64 bit OS が起動しないとき - Qiita [キータ]
 2点目のsshについては、Windowsでもsshコマンドを使えるようにもできるらしいですが今回はsshクライアントを使いました。puttyTera TermPoderosaなどがあるようです。Poderosaが扱いやすかったのでとりあえずPoderosaを使用していましたが、文字化けなどの関係で今はputtyを使用しています。

vagrantとホスト間でのファイルのやり取り

 最後に、VMとホストOS(Windows側)でファイルをやり取りする方法についてです。 Windows側のファイルを参照するには次のような方法があります。
・ssh接続が可能なので、それを使う
・デフォルトでVM側の/vagrantディレクトリは、vagrant initしたディレクトリと同じになるので、そこにファイルを置く
・Vagrantfileのsrc_dirに任意のディレクトリを書く
・sshfsを導入してVMを仮想ドライブとしてマウントする こういったやり方で、VMとの間でファイルを共有することができます。編集はWindowsで行い実行はVMで行うという操作も簡単に実現でき、非常に便利です。

資料

Getting Started - Vagrant Documentation
vagrantをwindowsにインストール - Qiita [キータ]
Ruby - Vagrant and Chef on Windows - Qiita [キータ]
Ruby - 今っぽい Vagrant + Chef Solo チュートリアル - Qiita [キータ]