2016年1月24日日曜日

chef chef-client Local modeを利用する chef-soloからの移行 その2. rbenv cookbookの変更

  • 公開日: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のバージョン

terminal

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■

{chef-repo_base}/Berksfile

source "https://api.berkshelf.com"
cookbook 'rbenv', github: "fnichol/chef-rbenv"

■After■

{chef-repo_base}/Berksfile

source "https://api.berkshelf.com"
cookbook 'ruby_rbenv'

rbenvがruby_rbenvに変更されました。

ruby install方法の変更

rbenvを使ってrubyをinstallする方法も変更されました。以前は以下のように属性を設定することでrubyが導入できました。

■Before■

{chef-repo_base}/roles/xxx.json

  "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■

{chef-repo_base}/roles/xxx.json

  "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で行います。

terminal

// rootになる
su -

cd {project_folder}/chef-repo

// Local modeで実行
chef-client -z -j nodes/192.168.33.23.json

導入したrubyの確認

terminal

// 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の理解も、利用するミドルウェアやサーバーの力も高めることができます。

ただし、十分に開発環境で検証しておきましょう。

以上です。

動画

How to use chef Tutorial 2. install ruby via rbenv.
PICK UP
関連記事
参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...