chefとknife-solo

新しい環境でchefとknife-soloをセットアップ。
まず、chefをインストール。

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

次にknife-soloとberkshelfをインストール。

$ /opt/chef/embedded/bin/gem install knife-solo
$ /opt/chef/embedded/bin/gem install berkshelf

knfie solo init を実行するとこんなエラーがでる。

$ knife solo init .
/opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb:2288:in `raise_if_conflicts': Unable to activate knife-solo-0.6.0, because net-ssh-4.0.1 conflicts with net-ssh (< 4.0, >= 2.7) (Gem::ConflictError)

なんだろ。net-sshはchefのインストールでは4.0.1がはいって、chef-soloのインストールで3.2.0がはいってバージョンが二つになってる。

$ knife solo init .
/opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb:2288:in `raise_if_conflicts': Unable to activate knife-solo-0.6.0, because net-ssh-4.0.1 conflicts with net-ssh (< 4.0, >= 2.7) (Gem::ConflictError)

これが悪いのかとおもって、net-sshの3.2.0をuninstallしてみる。

$ /opt/chef/embedded/bin/gen uninstall net-ssh
(なんか聞かれるので3.2.0を指定)

そうすると、また別のエラーが(ログ取るの忘れた)。
うーむ、どうしようか。
まぁバージョンの違いなぞそれほどたいしたことではなかろうという楽観的な希望的観測のもとに、knifeでのバージョン指定をコメントアウトするという荒業を使うことにする。
knifeの本体はchefインストール時に/opt/chef/bin/knifeに入っていて、rubyスクリプト。そのnet-sshのバージョン指定しているところをコメントアウト

#gem "net-ssh", "= 4.0.1"

いいのか、オレ。

$ knife solo init .
WARNING: No knife configuration file found
Creating kitchen...
Creating knife.rb in kitchen...
Creating cupboards...
Setting up Berkshelf...

動作したのでおけ。