Vagrant + VirtualBox を使って、Windows上にLinux仮想環境を構築する時のハマりどころ

f:id:monozukuri-bu:20170812222416j:plain

Vagrant初心者のモノづくり部 D嶋です。

他の部員と共通の開発環境を用意したいと思いまして、「Vagrant」+「VirtualBox」を使って、Windows上に、Linux仮想環境を構築してみました。

■導入ツール

ツール名 バージョン 説明
VirtualBox 5.1.22 使用しているPC(物理環境)上に、仮想的なPC(仮想環境)を作成できる仮想化ソフト
Vagrant 1.9.5 仮想環境上で、簡単に開発環境を構築、管理、配布することができるツール

■環境

環境 OS バージョン
物理環境 ホストOS Windows 10 pro 64bit
仮想環境 ゲストOS CentOS 7(Linux

恥ずかしながら、、、
初心者のわたくしめは、仮想環境なんて、 VirtualBoxをインストールして、Vagrantをインストールすれば、サクッと構築できるんでしょってナメてました。

でるわでるわ、エラーが、、、泣

私のような初心者の方向けに、 わたしがハマったポイントと解決策を共有させて貰いたいと思っております。

詳細については割愛しますが、仮想環境を構築して利用できるようになるまでのざっくりとした流れは、下記の通りです。
1)VirtualBoxをインストールする
2)Vagrantをインストールする
3)仮想環境を作成する(vagrant init コマンド実行)
4)仮想環境を起動する(vagrant up コマンド実行)
5)仮想環境にアクセスする(vagrant ssh コマンド実行)

1)2)3)5)は、問題なく、サクッと完了しました。
わたしがハマってしまったのは、4)です。下記に挙げる問題にぶち当たってしまいました。

①「rsync」コマンドのインストール

【問題】

仮想環境の起動(vagrant up コマンド実行)すると、下記のメッセージが表示され、エラー終了する。

"rsync" could not be found on your PATH. 
Make sure that rsync is properly installed on your system and available on the PATH.
【原因・解決策】

仮想環境の起動時に、"rsync"コマンドを使って処理しますが、このコマンドがインストールされていないためエラーが発生しています。したがって、このエラーは、"rsync"コマンドを使えるようにすれば解決します。
rsync"は、リモート、ローカルにかかわらずディレクトリやファイルを高速にコピーするコマンドです。 UnixLinux環境にはインストールされていますが、Windows環境にはインストールされていません。

Windows環境で、"rsync"コマンドを使うためには、CygwinMinGW、MSYSなどをインストールする必要があります。
これらは、Windows環境で、Unix,Linux環境のように動作(コマンド実行)させるためのツールです。"rsync"パッケージを導入する設定でインストールすれば、このエラーは解消します。

今回は試せてないですが、上記の解決法以外にも、VirtualBoxのファイル共有を使う設定をしていれば、解消できそうです。これについては、別途、追記させて頂きます。

②「Hyper-V」の無効化

【問題】

仮想環境の起動時に、いきなり、画面がブルースクリーンになって、OSがダウンしてしまいました。
これは、かなり焦りました。

【原因・解決策】

Windows環境(7以降)には、「Hyper-V」という仮想化機能が提供されています。
私のホストOSは、この「Hyper-V」が有効設定となっていたため、 同じく仮想化するVirtualBoxと衝突し、結果、OSがダウンしてしまったようです。
下記の手順で、「Hyper-V」を無効に設定すれば、この問題は解決します。
1. スタートボタンの右クリック ⇒ 「プログラムと機能」を起動する。
2. 左側のメニュー「Windowsの機能の有効化または無効化」を選択する。
3. Hyper-Vを探して、チェックボックスのチェックを外す。
4. Winodws再起動

③ロックファイルの削除

【問題】

仮想環境の起動(vagrant up コマンド実行)すると、下記のメッセージが表示され、エラー終了する。

The machine index which stores all required information about running Vagrant environments has become corrupt. 
This is usually caused by external tampering of the Vagrant data folder. 
Vagrant cannot manage any Vagrant environments if the index is corrupt. 
Please attempt to manually correct it. 
If you are unable to manually correct it, then remove the data file at the path below. 
This will leave all existing Vagrant environments "orphaned" and they'll have to be destroyed manually. 
Path: C:/Users/xxx/.vagrant.d/data/machine-index/index
【原因・解決策】

②の障害発生により、Vagrantの起動処理が、正しく終了していない事が原因です。
このような場合、正しく終了した場合と同じ状態に、Vagrantを戻す必要があります。
メッセージにあるパス(C:/Users/xxx/.vagrant.d/data/machine-index/index)にあるindexとindex.lockファイルを 削除してから、再度、仮想環境を起動すれば解決します。

④「vagrant-vbguest」のインストール

【問題】

仮想環境の起動(vagrant up コマンド実行)すると、下記のメッセージが表示され、エラー終了する。

Vagrant was unable to mount VirtualBox shared folders. 
This is usually because the filesystem "vboxsf" is not available. 
This filesystem is made available via the VirtualBox Guest Additions and kernel module. 
Please verify that these guest additions are properly installed in the guest.
This is not a bug in Vagrant and is usually caused by a faulty Vagrant box. 
For context, the command attempted was:  
【原因・解決策】

物理環境と仮想環境の間で、フォルダ共有に失敗した際に表示されるエラーです。
Vagrantは、物理環境と仮想環境の間でファイルの受け渡しをしたい場合、Vagrantfileに共有するフォルダを指定した上で、仮想環境を起動します。
その際に、ホストOSとゲストOSが同じでない場合、フォルダ共有に失敗します。

このOS差分を吸収してくれる「vagrant-vbguest」プラグインが用意されています。これをインストールすることで、このエラーは解消します。

$ vagrant plugin install vagrant-vbguest