思い出したころにvagrant upしようとすると、起きなくなっていることがあります。
管理者権限のPowerShellやCMDから起動しているのに(以前は起動していたのに)DNSの設定ができないというだけで、全てがままならない状況でした。
==> default: adding to (C:/WINDOWS/system32/drivers/etc/hosts) : 192.168.33.10 wordpress.local # VAGRANT: 2ff7cf4b5937
c1d75349461cf6fc5b78 (default) / 1c5c4c7c-1f49-498c-9ce2-98da43b72b7e
C:/Users/***/.vagrant.d/gems/gems/vagrant-hostsupdater-1.0.1/lib/vagrant-hostsupdater/HostsUpdater.rb:85:in `initialize
': Permission denied @ rb_sysopen - C:/WINDOWS/system32/drivers/etc/hosts (Errno::EACCES)
vagrantのアンインストール→新規インストール等で治ることもあるようですが、いま1回起動してくれればいい!というときの応急処置をメモ。
#環境
- OS Microsoft Windows [Version 10.0.10586]
- Ruby ruby 2.2.2p95 (2015-04-13 revision 50295) [x64-mingw32]
- Vagrant 1.8.1
- VirtualBox 4.4.34
※Windows10だと、VirtualBox 5.0のインストールに失敗するんですよね…。
hostsへ手動で追記する
書き込む内容について
エラー文の中に含まれる設定値をコピーしておきます。
設定によって変わるので必ず確認を。
今回はVCCW( http://vccw.cc/ )を使っている為下記のとおり。
192.168.33.10 wordpress.local # VAGRANT
管理者権限で起動した「メモ帳」を使って、hostsを手動編集
Windows10での例)
スタートメニューを開いて「メモ」などと入力>検索結果のメモ帳を右クリックして「管理者で実行」のうえ、hostsを開いてさっきの内容を新しい行に追記。
C:/WINDOWS/system32/drivers/etc/hosts
※「開く」ダイアログでは、ファイルの種類を「テキスト文書(*.txt)」から「すべての種類」に変更すること。
CMD.exe等で、DNSをフラッシュする
C:\xxx> ipconfig /flushdns
Windows IP 構成
DNS リゾルバー キャッシュは正常にフラッシュされました。
vagrant up時にエラーを出力している部分を書き換え
※当方Rubyを扱ったことがありませんので、もっと良い方法がありましたらお知らせください。
C:/Users/***/.vagrant.d/gems/gems/vagrant-hostsupdater-1.0.1/lib/vagrant-hostsupdater/HostsUpdater.rb
85から87までの行頭に#をつけてコメントアウト
81 if !File.writable_real?(@@hosts_path)
82 sudo(%Q(sh -c 'echo "#{content}" >> #@@hosts_path'))
83 else
84 content = "\n" + content
85 # hostsFile = File.open(@@hosts_path, "a")
86 # hostsFile.write(content)
87 # hostsFile.close()
88 end
※2016/2/24現在、File.writable_realの結果がtrueでも書き込めない模様...?
あとは普通にvagrant upで無事起動しました。
todo
RubyInstallerでRuby2.2.4が提供されているようなのでアップグレードしてみる。
(2016/2/26追記)Ruby2.2.4へアップグレードしたところvagrant up時にhostsへの書き込みができるようになりました。
一瞬動きましたが、数日後には動かなくなっておりました。