20
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-04-01

当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【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のインストール・配置」について。

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

20
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?