インストールするもの
Vagrantを動作させるのに必要なものをインストールします。
具体的には以下をインストールします。
- VirtualBox
- Vagrant
- OpenSSH
- rsync
※この記事では64ビット版Windowsを前提としています。
VirtualBoxのインストール
https://www.virtualbox.org/wiki/Downloads
から「Windows hosts」のリンクをクリックし、ファイルをダウンロード、実行してインストールします。
Vagrantのインストール
https://www.vagrantup.com/downloads.html
からWindowsのリンクをクリックし、ファイルをダウンロード、実行してインストールします。
ssh,rsyncインストール
Windows用のOpenSSH,rsyncを探すと、バージョンが古いことがあるため何からのパッケージ管理ツールからの導入がおすすめです。
MSYS2やCygwinを導入済みであればこれらのパッケージ管理からインストールします。
このようなパッケージ管理を導入していない場合は、scoopがおすすめです。
各パッケージ管理ツールでの導入方法を説明します。
MSYS2
導入やパッケージ管理については他の記事を参考にしてください。
次のコマンドでOpenSSH,rsyncをインストールします。
pacman -S openssh rsync
MSYS2のシェルからはvagrantが見えないため、C:\HashiCorp\Vagrant\bin
を環境変数に追加するか、Windowsの環境変数を継承するようにします。次の記事を参考にしてください。
Cygwin
https://cygwin.com/
からsetup-x86_64.exeのリンクをクリックし、ファイルをダウンロード、実行します。
Root Directoryは
C:\cygwin64
を指定します。
Download Siteはなるべく日本のサーバ(~.jp)を選択します。
Select Packages画面でインストールするパッケージを選択します。
Searchに入力して検索し、目的のパッケージのBinにチェックを入れ、「次へ」をクリックするとインストールされます。
次のパッケージを選択します。
- openssh
- rsync
インストール後に環境変数PATHに追加します。
C:\cygwin64\bin
Windowsを再起動します。
scoop
scoopの説明、導入については他の記事を参考にしてください。
次のコマンドでOpenSSH,rsyncをインストールします。
scoop install openssh rsync
※2017年9月15日現在では、scoop install openssh
でインストールされるバージョンがとても古くなっています。
New OpenSSH 7.1p1 does not work in PowerShell #638
代わりにwin32-openssh(scoop install win32-openssh
)をインストールするか
gitも使う場合はgit-with-openssh(scoop install git-with-openssh
)をインストールします。
※opensshからgit-with-opensshに乗り換えて、gitコマンドでerror: cannot spawn C:\Users\name\scoop\apps\openssh\current\bin\ssh.exe: No such file or directory
というエラーが出る場合は環境変数GIT_SSHを削除します。
インストールの確認
コマンドプロンプトでバージョンを確認する以下のコマンドを実行します。
vagrant --version
ssh -V
rsync --version
次のような表示が得られます。
Vagrant 2.0.0
OpenSSH_7.5p1, OpenSSL 1.0.2k 26 Jan 2017
rsync version 3.1.2 protocol version 31
トラブルシューティング
Vagrant 1.9.4
vagrant up でErrno::ECONNABORTEDが発生する
Vagrant up forces shutdown of VM #8520
リンク先の通りに3つのファイルを置き換えると解消されます。
- C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.4/templates/locales/en.yml
- C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.4/lib/vagrant/errors.rb
- C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.4/plugins/communicators/ssh/communicator.rb
Vagrant 1.9.3
vagrant up でエラーが発生する
ポートマッピング設定を行っているとエラーが発生し、起動に失敗します。
対策としては、Vagrant 1.9.2に戻すか、ポートマッピング設定にhost_ipを追加します。
例えば、次のようなポートマッピング設定に
config.vm.network "forwarded_port", guest: 8080, host: 8080
次のようにhost_ipの記述を追加します。
config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1"
参考:vagrant up fail in 1.9.3 on windows10
rsyncでのエラー
undefined method `gsub!' for nil:NilClass (NoMethodError)
Vagrant 2.0.0で発生。
Split out cygwin path and ensure bin exists #8972
このC:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-2.0.0\lib\vagrant\util\platform.rbへのパッチを適用する。
rsync: change_dir "/c/path/to/project" failed: No such file or directory (2).
vagrant up
や vagrant rsync
を実行するとエラーが発生する。
Windows + vagrant 1.8.1 + rsync 3.1.1 で発生する、config.vm.synced_folderの失敗の直し方
UndefinedConversionError
io.rb:32:in `encode': "xxx" from Windows-31J to UTF-8 (Encoding::UndefinedConversionError)
Windows + Vagrant + Rails の比較的快適な環境を作る
io.rbを書き換えます。