お手軽環境構築 !chefでrubyのバージョンを2.0.0-p195にする方法 ~CentOS~
以前chefを利用し、ローカル環境構築する方法について書きました。
そこで今回はrubyのバージョンをchefを使って2.0.0-p195にする方法を書いていきます!
- chefとvagrantのおさらい
- recipeファイルの置き場
- recipeファイルの内容
- まとめ
chefとvagrantのおさらい
以前何回か説明したようにchefとvagrantを組み合わせることで、コマンド一発でローカル環境を構築できる、大変優れたものです。
参考
Vagrantとchefで簡単お手軽ローカル環境構築 - nigoblog
詳しい方法は上記の記事を参考に!
recipeファイルの置き場
まずVagrantとchef(cookbooks)の関係は次のようになります
Vagrantfile cookbooks/
このようにファイルとディレクトリを配置します。
そこでcookbooksにrecipeファイルを作ります。
作り方は以下のとおり、
cookbooks/ rbenv/ recipes/ templates/ default/
ここでrecipes/配下にdefault.rbというファイルを作ります。
また同様にtemplates/default/配下にもファイルを作ります。
recipeファイルの内容
というわけでrecipeファイルを作ります。
そもそもCentOSにrbenvをインストールし、バージョンを上げる方法に関してはこちらを参考にしました。
CentOSでsystem wideなrbenv+ruby-build環境を構築する - 飲んだり寝たり
要するに上記の記事の手順を自動化するということです。
それでは早速default.rbを見ていきます
git "/usr/local/rbenv" do repository "git://github.com/sstephenson/rbenv.git" reference "master" action :sync end %w{/usr/local/rbenv/shims /usr/local/rbenv/versions}.each do |dir| directory dir do action :create end end git "/usr/local/ruby-build" do repository "git://github.com/sstephenson/ruby-build.git" reference "master" action :sync end bash "install_ruby_build" do cwd "/usr/local/ruby-build" code <<-EOH ./install.sh EOH end template "rbenv.sh" do path "/etc/profile.d/rbenv.sh" owner "root" group "root" mode "0644" source "rbenv.sh.erb" end %w{make gcc zlib-devel openssl-devel readline-devel ncurses-devel gdbm-devel db4-devel libffi-devel tk-devel libyaml-devel}.each do |pkg| yum_package pkg do action :install end end execute "rbenv install 2.0.0-p195" do command "rbenv install 2.0.0-p195" action :run not_if { ::File.exists?("/root/.rbenv/versions/2.0.0-p195") } end execute "rbenv global 2.0.0-p195" do command "rbenv global 2.0.0-p195" action :run end execute "rbenv global 2.0.0-p195" do command "rbenv global 2.0.0-p195" action :run end execute "rbenv rehash" do command "rbenv rehash" action :run end
かなり長くなってしまいましたが、こんな感じになります。
上から順に説明します。
まずはgithubからrbenvをインストールします。
この時、chefのgitというリソースを用います。
git "/usr/local/rbenv" do repository "git://github.com/sstephenson/rbenv.git" reference "master" action :sync end
ここでいうリソースとは
resources "~" do end
のresourcesの部分の命令のことを言います。
gitリソースはgitリポジトリからcloneしたりするのに使います。
オプションにはリポジトリ、ブランチ、そしてアクションを指定。
アクションのsyncは既にあればpull, なければcloneします。
次にディレクトリの作成です
%w{/usr/local/rbenv/shims /usr/local/rbenv/versions}.each do |dir| directory dir do action :create end end
ディレクトリ操作はdirectoryというリソースを使います。
eachで上記のディレクトリを作っていくというような感じになります。
オプションはaction :create
またここは
owner, groupの指定もでき、defaultではどちらもrootです。
次はruby-buildのインストールです。
git "/usr/local/ruby-build" do repository "git://github.com/sstephenson/ruby-build.git" reference "master" action :sync end bash "install_ruby_build" do cwd "/usr/local/ruby-build" code <<-EOH ./install.sh EOH end
rbenv同様gitリポジトリからcloneしてきます。
またinstall.shを実行するために
bashというリソースを使っています。
ここではrbenvのPATHを通します。
template "rbenv.sh" do path "/etc/profile.d/rbenv.sh" owner "root" group "root" mode "0644" source "rbenv.sh.erb" end
先程少し説明したtemplateファイルを読み込み、保存します。
templateファイルは
templates/default/rbenv.sh.erb
という名前で保存し、次のようになります
export RBENV_ROOT="/usr/local/rbenv" export PATH="/usr/local/rbenv/bin:$PATH" eval "$(rbenv init -)"
最後はrubyのインストールです。
%w{make gcc zlib-devel openssl-devel readline-devel ncurses-devel gdbm-devel db4-devel libffi-devel tk-devel libyaml-devel}.each do |pkg| yum_package pkg do action :install end end
これはrubyの最新版をインストールするのに必要なものです。
yumのepelが必要なので予めepelを使えるようにしといてください。
execute "rbenv install 2.0.0-p195" do command "rbenv install 2.0.0-p195" action :run not_if { ::File.exists?("/root/.rbenv/versions/2.0.0-p195") } end execute "rbenv global 2.0.0-p195" do command "rbenv global 2.0.0-p195" action :run end execute "rbenv rehash" do command "rbenv rehash" action :run end
最後はrbenvコマンドを実行していきます。
コマンドの実行はexecuteリソースを使い、オプションで実行するコマンドを設定します。
以上簡単でしたが、chefでrubyのバージョンを上げる方法でした!
まとめ
いちいち同じ事をするのは大変なので環境構築は是非とも自動化しましょう。
chefは電子書籍で良い本があるのでこちらを参考に
入門Chef Solo - Infrastructure as Code
- 作者: 伊藤直也
- 出版社/メーカー: 伊藤直也
- 発売日: 2013/03/11
- メディア: Kindle版
- 購入: 16人 クリック: 1,027回
- この商品を含むブログ (14件) を見る
関連書籍
Software Design (ソフトウェア デザイン) 2012年 10月号 [雑誌]
- 出版社/メーカー: 技術評論社
- 発売日: 2012/09/18
- メディア: 雑誌
- 購入: 2人 クリック: 35回
- この商品を含むブログ (12件) を見る
こちらもかなりよく書かれております。
- 作者: 栗林健太郎,柴田博志,はまちや2,常松伸哉,黒田良,川添貴生,安宅啓,松下雅和,桑野章弘,Jxck,伊藤直也,佐藤鉄平,登尾徳誠,中川勝樹,奥野幹也,近藤宇智朗,堀江幸紀,後藤秀宣,渡邊恵太,中島聡,A-Listers,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2013/06/22
- メディア: 大型本
- この商品を含むブログ (8件) を見る
web db press最新版も書かれておりました。