数年前に knife solo を使っていた環境の再セットアップのために knife を使おうとしたら、Ruby 2.0 が入っている OS X 10.11 El Captain では、そのままでは knife-solo がインストールできなくなっていた。
$ sudo gem install knife-solo --verbose
ERROR: Error installing chef-zero:
chef-zero requires Ruby version >= 2.1.0.
chef-zero が Ruby 2.1.0 を要求しています。
OS X 標準以外の Ruby を追加で入れるのは、管理が面倒になるので、
https://rubygems.org/gems/chef-zero で探してちょっと古いバージョンを入れることにします。
$ sudo gem install chef-zero -v 4.5.0 --verbose
https://rubygems.org/gems/chef も同様に少し古いものを選択します。
$ sudo gem install chef -v 12.7.2 --verbose
knife-solo がインストールできました。
$ sudo gem install knife-solo --verbose
(中略)
Successfully installed knife-solo-0.5.1
Parsing documentation for knife-solo-0.5.1
Parsing sources...
100% [50/50] lib/knife-solo/tools.rb
Installing ri documentation for knife-solo-0.5.1
1 gem installed
これで、うまく動くようになりました。
サーバ側はよろしくやってくれるみたい。
(2017/03/08 追記)
2017 年現在では、fi-yajl と rack など他の依存モジュールも、古いものを入れる必要がありそう。
sudo gem install ffi-yajl -v 2.2.3 --verbose
sudo gem install rack -v 1.6.5 --verbose
sudo gem install net-ssh-gateway -v 1.3.0 --verbose
sudo gem install net-ssh -v 2.9.4 --verbose
sudo gem install ohai -v 8.17.1 --verbose
sudo gem install chef-zero -v 4.5.0 --verbose
sudo gem install chef -v 12.7.2 --verbose
sudo gem install knife-solo -v 0.5.1 --verbose --ignore-dependencies
これで、macOS Sierra 10.12.3 でも、Chef: 12.7.2 の knife が使えるようになりました。
しかし、素直に Gemfile を書くか、古い knife を諦めたほうがいい気がする。