Ruby
YAML
Ansible
ruby-build
ansible-playbook

【連載01】214.(Ansible)Rbenvを使用してRuby環境をインストールする

More than 1 year has passed since last update.

当記事はケーススタディの連載となっています。目次は【こちら】です。

最新のソースコードは【GitHub】で公開中です。

サーバの責務はこちらで確認ください。


1.ruby設定概要

スクリプト言語Rubyをインストールする。Rubyは主にWebアプリケーションで利用されることが

多いと思いますが、今回は軽量なバッチシェルを作る場合に利用します。

image


2.playbookファイルの相関

image


3.playbook(site.yml)

${ANSIBLE_HOME}/site.yml

メインとなるplaybook(site.yml)参照


4.rubyインストール/設定のplaybook(/operations/1011_ruby.yml)

${ANSIBLE_HOME}/operations/1011_ruby.yml

playbook中のコメントの補足に関しては「5.補足説明」を参照。

# ========================================================

# Rubyをインストール(ruby.yml)
# ========================================================
- hosts: all
sudo: no
remote_user: root
tasks:
# ========================================================
# rubyが既にインストールされている場合は実行しない
# 為の確認コマンド
# ========================================================
- name: Rubyの存在確認
shell: which ruby
register: ruby_install
failed_when: ruby_install.rc not in [0, 1]

# ========================================================
# 以下のRubyがインストールされている場合は設定しない
# ========================================================

# ========================================================
# githubよりrbenv(Rubyの複数バージョン切替)をクローンする
# ========================================================
- name: gitからrbenvをクローンする
git: repo=https://github.com/sstephenson/rbenv.git dest=~/.rbenv
when: ruby_install.rc == 1

# ========================================================
# githubよりruby-build(rubyインストーラ)をクローンする
# ========================================================
- name: rbenvビルドプラグインをクローンする
git: repo=https://github.com/sstephenson/ruby-build.git dest=/root/.rbenv/plugins/ruby-build
when: ruby_install.rc == 1

# ========================================================
# rbenv init置換する
# ========================================================
- name: profile_init.sh内のREPLACE_EXECRBENVをrbenv initに置換する
replace: dest=/etc/profile.d/profile_init.sh regexp="^#REPLACE_EXECRBENV" replace='eval "$(rbenv init -)" >/dev/null 2>&1'
when: ruby_install.rc == 1

# ========================================================
# profile_init.shを再読み込み
# ========================================================
- name: bashの実行
shell: /etc/profile.d/profile_init.sh
when: ruby_install.rc == 1

# ========================================================
# ruby 2.1.8バージョンをインストールする
# ========================================================z
- name: 2.1.8のインストール
command: rbenv install 2.1.8
when: ruby_install.rc == 1

# ========================================================
# ruby 2.2.4バージョンをインストールする
# ========================================================z
- name: 2.2.4のインストール
command: rbenv install 2.2.4
when: ruby_install.rc == 1

# ========================================================
# rbenv rehashを行う
# ========================================================z
- name: rehashを行う
command: rbenv rehash
when: ruby_install.rc == 1

# ========================================================
# ruby 2.1.8をデフォルトに設定
# ========================================================z
- name: 2.1.8をデフォルトに設定
command: rbenv global 2.1.8
when: ruby_install.rc == 1

# ========================================================
# rbenv rehashを行う
# ========================================================z
- name: rehashを行う
command: rbenv rehash
when: ruby_install.rc == 1


5.補足説明


5.a 実行処理概要


Rubyのインストールは以下の手順で行います。

1. rbenvのgitクローン

2. rbenvビルド用のプラグインgitクローン

3. rbenv init - をログイン時に実行するように/etc/profile.d/profile_init.shにeval "$(rbenv init -)"を記述する。

4. 3のシェルを実行し現在シェル環境内でrbenvが使用できるようにする。

5. rbenvを使用してruby2.1.8,ruby2.2.4をインストールする

6. ruby2.1.8,ruby2.2.4の2versionのうち2.1.8を使用するように設定

7. rehashする。(~/.rbenv/shims/ に指定したRubyが使用できるように置き換える)

※今回のrubyインストール関して冪等性の担保は

which rubyが実行出来た場合には上記処理は行わない。

事にしていますが、

rbenvがインストールされている場合はインストール処理は行わない。

rbenvを使用して該当バージョンがインストールされている場合はインストールしない。

冪等性の担保は検討の余地ありと思います。


5.b. 実行処理補足説明

rubyのインストールに関しては今後のバージョンアップや他バージョンでの実行確認が容易に行えるように

環境切替に便利なrbenvを使用して実行します。

rbenvはgithubよりクローンして実行します。

ansibleでgitからクローンするにはgitモジュールを使用します。


gitモジュール

repoにURLを指定しクローンします。

git: repo=https://github.com/sstephenson/rbenv.git dest=~/.rbenv


commandモジュール

rbenvはモジュールが存在しない為commandモジュールを使用して実行します。

commandモジュールを使用する為,通常のshellと記述は同じです。

command: rbenv install 2.2.4

複数rubyバージョンをインストールした場合のデフォルト指定はrbenvのglobalを指定して行う。

command: rbenv global 2.2.4

最後にrbenvでバージョンを切り替えたり,gemをインストールした場合は

rehashを行い、~/.rbenv/shims以下に指定したバージョンをコピーする

(らしいが現在は不要になっている。rehashに関しては念の為。)

command: rbenv rehash

次回は「215.java/Tomcatのインストール・配置」について。

連載の目次は【こちら】です。