Web・IT うんたらら

業務系とWeb系の狭間でIT業界を彷徨いながら備忘録と足跡を残していきます

Windowsでvagrantが使えるようになるまでの紆余曲折

自宅のMacでは既に使っていて、すんなり導入できたのですが、会社のWindows7vagrantを使おうと思ったら思いのほかハマったのでまとめ。
プロバイダとして使ったのはvirtualbox。boxはCentOS5.8 64bit。(バージョンはあまり関係ないです。)

実施環境

本記事の目的

  • WindowsVagrant(64bit box)を正常起動できるようにする。
  • Windowsでsahara(vagrant sandbox on)を正常実行できるようにする。

WindowsVagrant(64bit box)を正常起動できるようにする。

まず、 vagrant up をした時点で、以下のメッセージがずっと表示されて正常に完了しませんでした。

    default: SSH auth method: private key
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...

通常でもVMの起動に時間がかかり、しばらくリトライすることはあるのですが、今回の場合は5分以上上記の状態が続いたので、さすがにおかしいだろうという事で調査しました。
何はともあれ、まずはVMの画面を見ない事には話にならないので、Vagrantfileに以下を追加 (orデコメント) し、GUIモードで起動。

config.vm.provider :virtualbox do |vb|
  vb.gui = true
end

すると、VirtualBoxで以下のエラーメッセージダイアログが表示され、起動に失敗していることがわかりました。

仮想化支援機構(VT-x/AMD-V)を有効化できません。64ビットゲストOSは64ビットCPUを検出できず、起動できません。

どうやらBIOSの設定で「Intel(R) Virtualization Technology」を有効にするといいらしいのですが、私の環境では見つからず……。
CPU自体が対応していないのかな?とも思いつつ、BIOS内を適当にあちこち探していると、「セキュリティ」→「システムのセキュリティ」→「仮想化技術」という名前で、該当の項目が見つかりました。
私の場合はHPのPCだったのですが、BIOSによって全然違う箇所にありそうなので、見つからない場合は、自分のBIOS名とVt-x、仮想化技術、などを組み合わせてググるといいかもしれません。
これでvagrat upは無事成功。

参考URL
http://d.hatena.ne.jp/yohei-a/20110124/1295887695
http://h20566.www2.hp.com/portal/site/hpsc/template.PAGE/public/psi/mostViewedDisplay?cc=JP&docId=emr_na-c02549727&lang=ja&ac.admitted=1402840433550.876444892.199480143

Windowsでsahara(vagrant sandbox on)を正常実行できるようにする。

さて、無事にVagrantを起動できるようになったところで、ロールバックなどのサンドボックス機能を追加するプラグイン「sahara」を導入したのですが、これの有効化 (vagrant sandbox on) でもエラーが発生。
原因は、環境変数 VBOX_INSTALL_PATH から、VirtualBoxを探そうとしているのだけど、Windowsでは、VBOX_MSI_INSTALL_PATH に該当のパスが設定されているため。
VBOX_INSTALL_PATHにも同様の値を設定し、再起動して反映させることで正常実行できるようになりました。

参考URL: http://blog.goo.ne.jp/frepe2004/e/07cc4542c60c9fce2aaace0b7fe31cca