当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【GitHub】で公開中です。
サーバの責務はこちらで確認ください。
##1.ruby設定概要
スクリプト言語Rubyをインストールする。Rubyは主にWebアプリケーションで利用されることが
多いと思いますが、今回は軽量なバッチシェルを作る場合に利用します。
##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のインストール・配置」について。
連載の目次は【こちら】です。