サーバー構築初心者がプロビジョニングツール「chef」に挑戦してみました(後編) ~knife-solo 0.7.0 preについて~

こんにちは、WEBサービス開発グループでOJT中で2017年度新入社員の添野です。

後編も前編に引き続き、プロビジョニングツールのchefを取り上げます。その中でも同梱されているknifeツールのknife-soloプラグインを取り上げます。

前編ではknife-soloプラグイン(前編ではバージョン0.6.0)をインストールすると、初期状態でRubygemsにおいてコンフリクトが起きていました。そこでコンフリクトを解決するため設定に色々な細工をしました。今回の後編ではその解決の努力が・・・

それでは早速ですが、後編を始めていきます。

ChefDKとchefの導入について、詳しいことは前編の記事をご覧ください。

ここからは前編と同じくknife-soloをインストールするのですが、なんとknife-soloに最新版(0.7.0 pre)が公開されていました。実際に以下のコマンドでインストールしてみます。

knife-soloだけインストールされましたね。

動作確認のために前編で作成したレシピを動かしてみます。詳しいことは前編の記事をご覧ください。

前編と同じ動作をしましたね。

なぜコンフリクトが無くて、すんなりと動作したのかはknife-soloのRubygemsページに理由がありました。まずは下図をご確認ください。
knife_solo
左は0.6.0で、右は0.7.0 preです。net-sshに注目すると上限が決められていますよね。Rubygemsでは依存関係があるものもあわせてインストールされる仕組みになっています。そのためknife-solo 0.60に対応してnet-ssh 3.2.0が、net-ssh 3.2.0に対応してnet-ssh-gateway 1.3.0がインストールされたということです。chef13系でもnet-sshとnet-ssh-gatewayは最新のバージョン(それぞれ4.1.0、2.0.0)を使っているため、コンフリクトが起こります。

一方で後編でインストールしたknife-solo 0.7.0 preにはnet-sshにおいてバージョンの上限が無いため、net-sshとnet-ssh-gatewayは最新のバージョンがインストールされます。chef13系でもnet-sshとnet-ssh-gatewayは最新のバージョンを使っているためコンフリクトが起こりません。

結論ですがchef13系にはknife-solo 0.7.0 preを使うことをおすすめします。なぜならばコンフリクトが起こらないためです。ちなみに二つのバージョンにおける差は、chef 12.11.18よりchef-soloに追加されたlegacyモードへの対応があるか無いかですので、大きな問題にはなりません。

chefに代表されるプロビジョニングという技術は奥深くて比較的新しいので、これを機に興味を持った方はチャレンジしてみることをおすすめします。chefではファイアウォール設定などのシステム設定、各種ミドルウェアやソフトウェアの管理(導入、更新、削除)を行えます。複数台のマシンへ同じ設定ができて、導入コストが削減できるという利点があります。

余談ですが、ニフティクラウドなどのクラウド技術を用いるとサーバーを立ち上げるための難しい設定が不要ですので、初心者でも比較的チャレンジしやすいと思います。

これにて後編は終了です。前編と後編にご付き合いいただきありがとうございました。ニフティでのものづくりを垣間見られる「ニフティものづくりブログ」へのご愛顧を今後ともよろしくお願いします。