WindowsでChefの環境をお手軽に入れてみたよ

前回記事Chocolateyを使用してお手軽にvagrantの環境を作成しましたが、 途中chefの環境でエラーとなってしまいあたふたしてしまいました。

今回は、そのあと調査の結果Chocolateyでお手軽にchef環境を作成するところをまとめます。

Chefといっても実際に作成するのはknife-soloの環境ををWindows側に作成するのが今回の目的になります。

knife-soloをインストールするためには、rubysshrsyncが必要になります。

まず rubyのインストールですが、ここに落とし穴がありました。 前回のお手本通り

C:\Users\xxx> cinst ruby
C:\Users\xxx> cinst ruby.devkit
C:\Users\xxx> cgem knife-solo

としたのですが、いざknifeを動かそうと思ったら、 cannot load such file -- yajl/2.0/yajl (LoadError) というエラーになってしまいます。 同じような現象に遭遇した方の記事を見てみるとどうもRuby2.0との相性が良くないみたいです。 実際にインストールされているrubyのバージョンを確認すると確かに Ruby2.0がインストールされていました。 対処方法はあるようなのですが、おとなしくRuby1.93をインストールして解決しようとしました。

C:\Users\xxx> chocolatey list ruby

で検索してみましたが、ruby 単独でv1.93のものはなく

....
ruby 2.0.0.24700
ruby.devkit 4.5.2.20111230
ruby.devkit.ruby193 4.52
....

近いものだと上記のようなものになっていました。 試しに

C:\Users\xxx> cinst ruby.devkit.ruby193

としたところ一緒にruby193もインストールできましたのでこれで進めます。

rsyncですが 前回のお手本通り

C:\Users\xxx> cinst cwrsync

とすると7z.exeが見つからない旨のエラーとなりインストールできませんでした。 ですので一旦

C:\Users\xxx> chocolatey uninstall cwrsync
C:\Users\xxx> cinst 7zip

とします。しかしどうも7zipは自動的にパスが通らないみたいなので手動で環境変数のPATHに追加してあげて

C:\Users\xxx> cinst cwrsync

で無事インストールができました。後で必要になるsshも一緒に入るようです。

グダグダになりましたがお手軽にwindowsにchef環境入れるには

C:\Users\xxx> cinst ruby.devkit.ruby193
C:\Users\xxx> cinst 7zip
ここで7z.exeの実行パスを環境変数に追加 (私の環境では C:\Program Files\7-Zip)
C:\Users\xxx> cinst cwrsync
C:\Users\xxx> cgem knife-solo

これでOK。(2013/8/27現在)

ただ、他の開発用に他のバージョンのrubyが複数あったりするとknifeうまく動かないみたいです。