Posted at

knife soloで「FATAL: Cannot find sub command for: ‘solo'」というエラーが出る場合の解決策

More than 5 years have passed since last update.


結論

Chef Soloを使う場合、Chefは公式からではなくgemから入れる。


理由

Mac OS Xで、Chefとknife-soloをそれぞれ以下のコマンドでインストールするとする。

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

$ sudo gem install knife-solo

このとき、以下のようなことが生じる。



  1. curl -L 〜により、/opt/chefknifeコマンドがインストールされる


  2. sudo gem 〜により、knife-soloの依存であるchefもインストールされる

  3. システムのknifeコマンドは、gemのChefではなく/opt/chefを参照している


  4. /opt/chefからは、gemであるknife soloは見えないのでエラーとなる

ひとことでいうと、2つのknifeコマンドが共存している状態になる

ここでknife solo prepare 〜などとしても、knifeからはknife soloが見えない。

このとき、タイトルのとおり以下のようなエラーが生じる。

FATAL: Cannot find sub command for: ‘solo'

公式から入れずとも、gem install knife-soloさえすれば自動的に依存であるchefもインストールされる。

なので、Chef Soloを使うときはgem install knife-soloをすればよい。

※ 認識違いがあればコメントください!m(_ _)m


参考