- 公開日:2016年01月24日
- 最終公開日:2016年01月26日
記事概要
ずっと放置していたchefの移行作業の詳細記事です。今回はrbenvのcookbookについて記述しています。
動画で実際の動きも確認できます。
環境
- rbenv
- chef
- vagrant centos6.5
はじめに
chefで構成管理をしている開発者は、Ruby on RailsでWEBアプリを構築している人が多いと思います。 私もWEBアプリは、よほどの理由がない限りはRuby on Railsを利用しています。
また、Ruby on Rails開発者のrubyのバージョン管理は、rbenvを使用している人が多いと思います。私もrbenvを使用していて、サーバーにはBerksfileのcookbookを利用してrbenvを導入しています。
しかし、これまでchef-soloで利用していたrbenvのcookbook仕様が大きく変更されたようです。
そのため、色々とはまってしまいました。
動作確認をしながら確認したので、まとめて記事にしました。
chefのバージョン
chef -v Chef Development Kit Version: 0.10.0 chef-client version: 12.5.1 berks version: 4.0.1 kitchen version: 1.4.2
cookbook nameの変更
Berksfileのcookbookの名称が変更になりました。
■Before■
source "https://api.berkshelf.com" cookbook 'rbenv', github: "fnichol/chef-rbenv"
■After■
source "https://api.berkshelf.com" cookbook 'ruby_rbenv'
rbenvがruby_rbenvに変更されました。
ruby install方法の変更
rbenvを使ってrubyをinstallする方法も変更されました。以前は以下のように属性を設定することでrubyが導入できました。
■Before■
"run_list": [ "recipe[ruby_build]", "recipe[rbenv::system]" ], "default_attributes": { "rbenv": { "rubies": "2.2.2", "global" : "2.2.2", "gems" : { "2.2.2" : [ { "name" : "bundler" } ] } } }
■After■
"run_list": [ "recipe[ruby_build]", "recipe[ruby_rbenv::system_install]", "recipe[ruby_rbenv::system]" ], "default_attributes": { "rbenv": { "rubies": "2.2.2", "global" : "2.2.2", "gems" : { "2.2.2" : [ { "name" : "bundler" } ] } } }
recipeのsystem.rbを利用する必要があります。
ruby install
chefをLocal modeで実行してrubyをinstallします。当然、実行はrootで行います。
// rootになる su - cd {project_folder}/chef-repo // Local modeで実行 chef-client -z -j nodes/192.168.33.23.json
導入したrubyの確認
// global ruby version confirm rbenv global 2.2.2 // gem version confirm rbenv exec gem --version 2.4.5 // installed gem list confirm rbenv exec gem list *** LOCAL GEMS *** bigdecimal (1.2.6) bundler (1.11.2) io-console (0.4.3) json (1.8.1) minitest (5.4.3) power_assert (0.2.2) psych (2.0.8) rake (10.4.2) rdoc (4.2.0) test-unit (3.0.8)
まとめ
chefを利用してミドルウェアをインストールする場合は、極力Berksfileのcookbookを利用するべきだと思います。
今回のrbenvのように大きめの変更が入る場合もあるのですが、コードを読む手間を考慮しても実績のあるcookbookを使うべきです。
使うことでchefの理解も、利用するミドルウェアやサーバーの力も高めることができます。
ただし、十分に開発環境で検証しておきましょう。
以上です。
0 件のコメント:
コメントを投稿