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

Chef実践入門を実践してみる その4

knife-soloをローカルOSに入れる

今までテキストに沿って「gem install hogehoge」というように使用していましたが、
そもそもgemって何?となったので、調べました。

rubyのモジュール等をネット経由でインストールする仕組みで、
ruby本体に付属して入っているとのこと。なるほど。

ということで、ローカル側で以下のコマンドを実行してみました。

$ gem install knife-solo

またエラーになりました。。。

ERROR:  While executing gem ... (Gem::DependencyError)
    Unable to resolve dependencies: knife-solo requires net-ssh (< 4.0, >= 2.7); chef requires net-ssh (< 5.0, >= 2.9); specinfra requires net-ssh (< 5.0, >= 2.7); net-scp requires net-ssh (>= 2.6.5); net-sftp requires net-ssh (>= 2.6.5); net-ssh-multi requires net-ssh (>= 2.6.5); net-ssh-gateway requires net-ssh (>= 4.0.0)

依存するnet-sshが入っていない・・・?
というわけでnet-sshをインストールしてみます。
「< 4.0, >= 2.7」との表記からバージョンを確認し、満たす中での最新バージョンを指定してインストール

$ sudo gem install net-ssh --version "=3.2.0"

そして再挑戦。

ERROR:  While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: net-ssh-gateway requires net-ssh (>= 4.0.0)

・・・
最初にした時も出てた!
これを満たす条件なんて無いよう。。。

$ sudo gem install net-ssh-gateway

とりあえずnet-ssh-gateway指定でインストールしてみる

コマンドラインデペロッパーツールが無いから、というような記事も見つけたので、
インストール実施。

そして再チャレンジ

$ sudo gem install knife-solo
Password:
Building native extensions.  This could take a while...
Successfully installed libyajl2-1.2.0
Fetching: ffi-yajl-2.3.0.gem (100%)
ERROR:  Error installing knife-solo:
	ffi-yajl requires Ruby version >= 2.1.

今度はRubyのバージョンを上げろと言われる。。。。道のりは遠い。。

$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]

確かに一致していない様子。
異なるバージョンを入れると切り替えが面倒という記事を読みつつ、
chef-soloのインストール指定バージョンを下げても求められることは変わらないためrubyのバージョンを上げることにする。

この記事を参考にしました。
qiita.com

HOMEBREWのインストール最中、
使用せずに以前入れていたpythonのPATHやらなんやらが邪魔をしてくるので、
すぐに使用しないため、pythonを削除

そしてついに上記記事を参考にし、ようやく2.2.3のrubyをインストールしました。
(どんどん本筋から離れていく。。。)

$ sudo gem install knife-solo

ついに成功・・・・・!
長かったです。。。

今はもう使用されていないchef-soloという機能ですが、
勉強のために入れてみようと思い、数時間。
大変でした。

そしてテキストに則り、berkshelfもインストール

$ sudo gem install berkshelf

スムーズに終わるって素晴らしい。

今日はここまで。