こちらの本を読んでchefを動かしてみた際にハマった部分をメモ

入門Chef Solo - Infrastructure as Code
- 作者: 伊藤直也
- 出版社/メーカー: 伊藤直也
- 発売日: 2013/03/11
- メディア: Kindle版
- 購入: 16人 クリック: 1,027回
- この商品を含むブログ (17件) を見る
まずomnibusのインストーラでchefを入れる
$ curl -L https://www.opscode.com/chef/install.sh | sudo bash
chef 11.12.0が入った
そして、gemを用いてknife soloをいれる
$ gem install knife-solo
入ったのでchefのレポジトリを作成しようとknife solo init hogehogeとすると以下のようにエラー
$ knife solo init hogehoge FATAL: Cannot find sub command for: 'solo init hogehoge' Available subcommands: (for details, knife SUB-COMMAND --help) ** BOOTSTRAP COMMANDS ** knife bootstrap FQDN (options) ** CLIENT COMMANDS ** knife client bulk delete REGEX (options) knife client create CLIENT (options) knife client delete CLIENT (options) knife client edit CLIENT (options) knife client list (options) knife client reregister CLIENT (options) knife client show CLIENT (options) ** CONFIGURE COMMANDS ** knife configure (options) knife configure client DIRECTORY ・・・以下コマンドのヘルプが続く
どうやらsolo自体が認識されていない感じ
ググってみるとchefが複数バージョン入っているとそうなることがあると判明
gemで入っているパッケージを見てみる
$ gem list chef *** LOCAL GEMS *** chef (11.14.0.alpha.2) chef-zero (2.0.2)
最初にomnibusのインストーラで入れたのとは別にさらに新しいバージョンが入っていた
knife soloのインストール時に依存関係によって入ったのかと思われる
新しい方を残すことにしたのでomnibusで入れた方を削除したいがuninstall.shなどはない
これもググってみると以下のページがあった
http://stackoverflow.com/questions/17115245/how-to-uninstall-chef-client-and-the-whole-chef-package
このページの通り/opt/chef以下を全て消し
/usr/binのchef関係のコマンドをgemで入れたchefの方を見るように変更
$ sudo rm -rf /opt/chef $ gem which chef ~/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/chef-11.14.0.alpha.2/lib/chef.rb $ ls ~/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/chef-11.14.0.alpha.2/bin chef-apply chef-client chef-service-manager chef-shell chef-solo knife shef $ ln -s ~/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/chef-11.14.0.alpha.2/bin/chef-apply /usr/bin/chef-apply ・・・すべてリンク張る
これで再度knife soloを使ってみると無事動いた
追記:このあとさらにknife solo prepareでwgetが404となってchefがインストールできないことがあったがそれはこちらのページの通り解決
http://mrk1869.com/blog/chef_prepare/