LoginSignup
3
3

More than 5 years have passed since last update.

vagrant-berkshelf プラグインをwindows環境で動作させる方法

Last updated at Posted at 2015-06-30

Encoding::InvalidByteSequenceError の問題について

Windows上のvagrant 環境でvagrant-berkshelf プラグインをインストールすると、コマンドプロンプトから vagrant up を実行した際に以下のエラーが出ます。

The stdout and stderr are shown below:

    stdout:
    stderr: C:/opscode/chefdk/embedded/lib/ruby/gems/2.0.0/gems/json-1.8.2/lib/j
son/common.rb:155:in `encode': "\xA0" on Windows-31J (Encoding::InvalidByteSeque
nceError)

このエラーは、 C:\opscode\chefdk\bin\berks.bat に「set RUBYOPT=-EUTF-8」の記述を追加することで回避できます。
かなりワークアラウンドっぽいですが...
しかし、Chef Development Kit はそれほどアップデートが激しくないので、おそらく問題ないと思います。

修正前 (berks.bat)

  @ECHO OFF
  "%~dp0\..\embedded\bin\ruby.exe" "%~dpn0" %*

修正後 (berks.bat)

  @ECHO OFF
  set RUBYOPT=-EUTF-8
  "%~dp0\..\embedded\bin\ruby.exe" "%~dpn0" %*

なお、Berkshelf をコマンドプロンプトから直接実行した場合も、同様のエンコーディングに関するエラーになりますが、こちらはコントロールパネルの「システム」から環境変数を設定することでも回避可能です。

参考URL:
http://crosawassant.hatenablog.com/entry/2015/02/06/121321

Vagrantfile の chef.cookbooks_path が上書きされてしまう問題について

vagrant-berkshelf プラグインを有効にすると、Vagrantfile の chef.cookbooks_path が上書きされ、強制的に cookbooks ディレクトリ のみを参照するようになります。
通常 Chef を単体で使用している場合は site-cookbooks ディレクトリ配下にクックブックを記述していくので、結果として vagrant-berkshelf プラグインを有効にした途端に、Cookbook not found エラーが頻発することになります。
この問題の解決は、Berkshelf の流儀?に沿って cookbooks ディレクトリに全てのクックブックをまとめるような運用フローにするか、またはこの辺りのPRが取り込まれるのを待つしかないようです。
https://github.com/berkshelf/vagrant-berkshelf/pull/266

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3