こんにちは、WEBサービス開発グループでOJT中で2017年度新入社員の添野です。
後編も前編に引き続き、プロビジョニングツールのchefを取り上げます。その中でも同梱されているknifeツールのknife-soloプラグインを取り上げます。
前編ではknife-soloプラグイン(前編ではバージョン0.6.0)をインストールすると、初期状態でRubygemsにおいてコンフリクトが起きていました。そこでコンフリクトを解決するため設定に色々な細工をしました。今回の後編ではその解決の努力が・・・
それでは早速ですが、後編を始めていきます。
ChefDKとchefの導入について、詳しいことは前編の記事をご覧ください。
ここからは前編と同じくknife-soloをインストールするのですが、なんとknife-soloに最新版(0.7.0 pre)が公開されていました。実際に以下のコマンドでインストールしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ /opt/chef/embedded/bin/gem install knife-solo --pre Fetching: knife-solo-0.7.0.pre.gem (100%) Thanks for installing knife-solo! If you run into any issues please let us know at: https://github.com/matschaffer/knife-solo/issues If you are upgrading knife-solo please uninstall any old versions by running `gem clean knife-solo` to avoid any errors. See http://bit.ly/CHEF-3255 for more information on the knife bug that causes this. Successfully installed knife-solo-0.7.0.pre Parsing documentation for knife-solo-0.7.0.pre Installing ri documentation for knife-solo-0.7.0.pre Done installing documentation for knife-solo after 0 seconds 1 gem installed |
knife-soloだけインストールされましたね。
動作確認のために前編で作成したレシピを動かしてみます。詳しいことは前編の記事をご覧ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ chef-solo -c chef-repo/solo.rb -j chef-repo/nodes/hello.json Starting Chef Client, version 13.1.31 resolving cookbooks for run list: ["hello"] Synchronizing Cookbooks: - hello (0.1.0) Installing Cookbook Gems: Compiling Cookbooks... Converging 1 resources Recipe: hello::default * log[Hello World] action write Running handlers: Running handlers complete Chef Client finished, 1/1 resources updated in 03 seconds |
前編と同じ動作をしましたね。
なぜコンフリクトが無くて、すんなりと動作したのかはknife-soloのRubygemsページに理由がありました。まずは下図をご確認ください。
左は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ではファイアウォール設定などのシステム設定、各種ミドルウェアやソフトウェアの管理(導入、更新、削除)を行えます。複数台のマシンへ同じ設定ができて、導入コストが削減できるという利点があります。
余談ですが、ニフティクラウドなどのクラウド技術を用いるとサーバーを立ち上げるための難しい設定が不要ですので、初心者でも比較的チャレンジしやすいと思います。
これにて後編は終了です。前編と後編にご付き合いいただきありがとうございました。ニフティでのものづくりを垣間見られる「ニフティものづくりブログ」へのご愛顧を今後ともよろしくお願いします。