どうも、ガシMAXです。

先日、Chefを使ってみよう!!番外編#1でWorkstation用のサーバを作るので、
その模様を披露するということでしたが。。。

「ちょっと奥さん!!聞いてよ。ガシMAXさんとこハマったらしいわよ。」
「あらそうなの?それは不憫ねぇ。でもちょっとだけでしょ?」
「いや、それがどっぷりらしいのよ。」っていう奥様方の会話が聞こえてくる
くらいハマってしまいました。

これはハマり易いというか、今からChefを始めようという人は結構な人がハマる
可能性があるので、ここに記しておきます。ちなみに、同じようなハマり方を
している人は最後のオチを早めに見た方がいいかも。

まず、やろうとしていることは次の通りです。

・Workstation用のサーバを作る
・Chefをインストールする
・Knife-soloプラグインをインストールする
・Chefを使えるよう環境を整える

それでは、私のハマりっぷりをご覧いただきましょう。

1.Workstaion用のサーバを作る

AWS上にCentOSのサーバを作りました。さすがにここではハマりませんね。

2.Chefをインストールする

# curl -L http://www.opscode.com/chef/install.sh | sudo bash
(略)
 Preparing... ########################################### [100%]
 1:chef ########################################### [100%]
 Thank you for installing Chef!

これでChefのインストール完了です。
4月15日時点ではバージョン11.12.2がインストールされるようです。

3.Knife-soloプラグインをインストールする

# gem install knife-solo
gem: command not found

そうですか、gemが見当たらないと。まぁこれくらいのイレギュラーは想定内です。
gemをインストールしましょう。

gemをインストールするにはRubyの1.8.7が必要なので、まずはRuby1.8.7を
インストールしましょう。

# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p357.zip
wget: command not found

ほう、wgetもないと。まぁまぁインストールすればいいんでしょ?
ではこれもインストールしましょう。

# yum install wget

(略)
 Installed:
 wget.x86_64 0:1.12-1.11.el6_5
 Complete!

wgetをインストールしました。では気を取り直して、rubyをダウンロードしましょう。

# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p357.zip

(略)
 100%[======================================>] 5,994,841 2.30M/s in 2.5s
 2014-04-15 14:12:42 (2.30 MB/s) - `ruby-1.8.7-p357.zip' saved [5994841]

rubyダウンロード完了!!はい次解凍。

# unzip ruby-1.8.7-p357.zip
unzip: command not found

・・・unzipすらねぇ。
unzipのインストールですね。はい。

# yum install unzip

(略)
 Installed:
 unzip.x86_64 0:6.0-1.el6
 Complete!

ふぅ。
ここらへんからそもそも自分が何をやろうとしていたのかわからなくなってきます。
たしか、ダウンロードしたrubyの解凍でしたっけ?

# unzip ruby-1.8.7-p357.zip

(略)
 inflating: ruby-1.8.7-p357/wince/sys/types.h
 inflating: ruby-1.8.7-p357/wince/sys/stat.c

どうやら解凍されました。それでは、rubyのインストールです。
インストールの前に「configure」というスクリプトを実行し、
インストール対象のシステムのチェックを行い、makefileを作成してから
インストールを行います。

# cd ruby-1.8.7-p357
 # ./configure

(略)
 configure: error: in `/root/ruby-1.8.7-p357':
 configure: error: no acceptable C compiler found in $PATH
 See `config.log' for more details.

チェックの段階で何かエラー出てるし。。もうっ!!
面倒くさいからyumでインストールし直します。

# yum install ruby

(略)
 Installed:
 ruby.x86_64 0:1.8.7.352-13.el6

Dependency Installed:
compat-readline5.x86_64 0:5.2-17.1.el6 ruby-libs.x86_64 0:1.8.7.352-13.el6
Complete!

よし!!いい子だ。で、何でしたっけ?そうそう、gemを入れるんでしたね。
gem入れます。まずダウンロード。

# wget http://rubyforge.org/frs/download.php/75711/rubygems-1.8.15.tgz

(略)
 100%[======================================>] 251,305 156K/s in 1.6s
 2014-04-15 15:02:11 (156 KB/s) - `rubygems-1.8.15.tgz' saved [251305/251305]

ダウンロード完了。つぎ解凍。

# tar zxvf rubygems-1.8.15.tgz

(略)
 rubygems-1.8.15/bin/gem
 rubygems-1.8.15/bin/update_rubygems

解凍できたんで、解凍したディレクトリに移動してインストール。

# cd rubygems-1.8.15
# ruby setup.rb

(略)
 RubyGems installed the following executables:
 /usr/bin/gem

インストール完了。ようやくknife-soloプラグインをインストールにたどり着きました。
knife-soloインストール!!

# gem install knife-solo

ERROR: Error installing knife-solo:
mime-types requires Ruby version >= 1.9.2.

はぁ?rubyのバージョンを1.9.2以降に上げろだと?あ〜もうっ!!
では2.0.0-p195をインストールです。

# wget ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz
# tar zxvf ruby-2.0.0-p195.tar.gz
# cd ruby-2.0.0-p195
# ./configure

(略)
make[2]: *** [ossl_pkey_ec.o] Error 1
make[2]: Leaving directory `/root/ruby-2.0.0-p195/ext/openssl'
make[1]: *** [ext/openssl/all] Error 2
make[1]: Leaving directory `/root/ruby-2.0.0-p195'
make: *** [build-ext] Error 2

今度は何ですかもう。。。openssl関係でエラーですか?調べてみるとrubyのバグとのこと。
現在は、修正済みみたいなので、さらに新しいバージョンruby-2.0.0-p353をインストール。

# wget ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz
# tar zxvf ruby-2.0.0-p353.tar.gz
# cd ruby-2.0.0-p353
# ./configure
# make
# make install

(略)
installing manpages:/usr/local/share/man/man1
installing default gems:/usr/local/lib/ruby/gems/2.0.0 (build_info, cache, doc, gems, specifications)
bigdecimal 1.2.0
io-console 0.4.2
json 1.7.7
minitest 4.3.2
psych 2.0.0
rake 0.9.6
rdoc 4.0.0
test-unit 2.0.0.0

はぁ。インスコ完了。もうホントに自分を見失ってます。次なんだっけ?
knife-soloのインストールでしたね。

# gem install knife-solo

(略)
Parsing documentation for knife-solo-0.4.1
Installing ri documentation for knife-solo-0.4.1
26 gems installed

やった。。やったよ母さん!!ようやく前進できるよ。
knife-soloがインストールできたので、初期設定に移ります。

# knife configure
WARNING: No knife configuration file found
Where should I put the config file? [/root/.chef/knife.rb]
ERROR: Ohai::Exceptions::DependencyNotFound: Can not find a plugin for dependency os

もう死にたいです。。なに!今度はなに!!

調べると、どうやら4月上旬頃から新規にchefをインストールすると発生するエラーで、
最新版であるChef 11.12.2 又は 11.12.0 をインストールして「knife configure」を
実行すると発生するバグであると。

Chefのバージョンをダウンさせるか、バグが解消されるのを待つか、という選択肢になってくる
わけですが、一応ここまでがんばったんだし、バージョンダウンさせてやってみるかと自らを
奮い立たせました。
11.12.2 、11.12.0以外でどのバージョンがインストール可能かを調べ、11.10.4-1に決定。
どのOSにどのバージョンがインストール可能かは以下のURLから調査可能です。

http://www.getchef.com/chef/install/

ということで、一旦Chef 11.12.2とknife-soloプラグインをアンインストールし、
chef 11.10.4-1とknife-soloのインストールです。

# gem uninstall chef
# gem uninstall knife-solo
# curl -L https://www.opscode.com/chef/install.sh | bash -s -- -v 11.10.4-1
# gem install knife-solo
Fetching: chef-11.12.2.gem (100%)
Successfully installed chef-11.12.2
Fetching: knife-solo-0.4.1.gem (100%)
Thanks for installing knife-solo!
(略)

knife-soloをインストールした時点でchefのバージョンが最新版に上がってる
ような気がするんですが。。。気のせいかな。きっと気のせいさ。

では、いよいよknife-solo初期設定です。

# knife configure
WARNING: No knife configuration file found
Where should I put the config file? [/root/.chef/knife.rb]
ERROR: Ohai::Exceptions::DependencyNotFound: Can not find a plugin for dependency os

やっぱりね。。。キーーーーっ!!もう無理!!諦めます。
ちょっとこれは抜本的にやり方を見直すか、バグが修正されるのを待つかしないという
状態なので、今回はここまでにします。

まとめ
4月20日時点ではchefを新規にインストールして、knife-soloプラグインを使用しようとすると
バグが付いてきて、どうしようもありません。

・Chef 11.12.2 又は 11.12.0 をインストールして「knife configure」実行するとエラーが発生する
・Chefのバージョンをダウンさせても「knife-solo」をインストールするとChefが最新版になってしまう

ということで、私自身今回のオペレーションで結構な時間を棒に振る事になったので、
みなさんが同じ過ちを犯さぬよう、ここに記しました。参考になれば人柱になった
甲斐があるってもんです。

では。