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

  • 9
    Like
  • 0
    Comment
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のインストール・配置」について。

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