読者です 読者をやめる 読者になる 読者になる

chef の knife で /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife/core/subcommand_loader.rb:172:in `latest_specs': wrong number of arguments (1 for 0) (ArgumentError)

chef の knife コマンドを使うと以下のエラーが出た。

----------------------
/usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife/core/subcommand_loader.rb:172:in `latest_specs': wrong number of arguments (1 for 0) (ArgumentError)
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife/core/subcommand_loader.rb:172:in `latest_gem_specs'
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife/core/subcommand_loader.rb:153:in `find_files_latest_gems'
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife/core/subcommand_loader.rb:120:in `find_subcommands_via_rubygems'
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife/core/subcommand_loader.rb:68:in `gem_and_builtin_subcommands'
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife/core/subcommand_loader.rb:75:in `subcommand_files'
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife/core/subcommand_loader.rb:34:in `load_commands'
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife.rb:120:in `load_commands'
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/knife.rb:168:in `run'
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/lib/chef/application/knife.rb:135:in `run'
from /usr/lib/ruby/gems/1.8/gems/chef-11.12.8/bin/knife:25
from /usr/bin/knife:19:in `load'
from /usr/bin/knife:19
-------------------------

これに対する解決記事が全然なくて結構ハマった。

原因は ruby と gem のバージョン。

ruby & gem を以下のようにyumでインストールしすると、
古いバージョンをインストールしてしまうみたいで、
knifeが上手く動作しなかったみたい。

# yum -y install ruby ruby-devel
# yum -y install rubygems

なので、ソースからインストールする。


以下でバージョンを確認できる。
https://www.ruby-lang.org/ja/downloads/

# wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz
# ls
# tar zxvf ruby-2.1.2.tar.gz
# cd ruby-2.1.2
# ./configure
# make
# make install
# ruby -v


この時点で gem も入っているはず。
# gem -h


chef-clientのインストール
以下でコマンドを確認するといい。
http://www.getchef.com/chef/install/

# curl -L https://www.opscode.com/chef/install.sh | sudo bash


knife-soloのインストール
# gem install knife-solo --no-ri --no-rdoc


knifeの初期設定(色々効かれるけど、全部デフォルトでOK)
# knife configure


とりあえず、リポジトリを作ってみる。
# knife solo init repo

ここまでできればOK。
あとは他のサイトで使い方を勉強して下さい。