silverlogic.rvm

ビルドステータス オープンコレクティブ オープンコレクティブ Ansibleの役割

rvm1-ansibleとは?

rvmを使用してRubyのバージョンをインストールおよび管理するためのAnsibleの役割です。

なぜrvmを使うべきか?

本番環境では、新しいRubyのバージョンをコンパイルするのに数分かかることがあり、その間CPUが100%使用されることになります。

rvmは多くのオペレーティングシステム用の事前コンパイル済みバイナリを持っています。これにより、遅いマイクロインスタンスでも約1分でRubyをインストールできます。

この役割は、システム全体のインストールを行う際にRubyのバイナリをシステムのパスに追加します。これにより、バージョン管理ツールを使わずにインストールしたかのようにそれらにアクセスでき、rvmの利点を享受できます。

インストール

$ ansible-galaxy install rvm.ruby

役割の変数

以下は、設定可能なデフォルト値のリストです:

---

# 1つ以上のRubyバージョンをインストール
# 最後にリストされたRubyがデフォルトとして設定されます
rvm1_rubies:
  - 'ruby-2.3.1'

# bundler gemをインストール
rvm1_bundler_install: True

# Bundlerのバージョン - 空白の場合は最新を使用
rvm1_bundler_version: ''
rvm1_bundler_install_command: '{{ rvm1_bundler_version | ternary("gem install -v {{ rvm1_bundler_version }} bundler", "gem install bundler") }}'

# 特定のRubyバージョン(例:ruby-2.1.0)を削除
rvm1_delete_ruby:

# rvmのインストールパス(デフォルトはシングルユーザー)
# 注意:ROOTベースのインストールを行う場合は、
#       インストールパスを'/usr/local/rvm'のように設定してください
rvm1_install_path: '~/.rvm'

# インストールフラグを追加または削除
# 注意:ROOTベースのインストールを行う場合は、
#       以下の--user-installフラグを削除してください
rvm1_install_flags: '--auto-dotfiles --user-install'

# 追加のRubyインストールフラグ
rvm1_ruby_install_flags:

# rvmディレクトリの所有者を設定
# 注意:ROOTベースのインストールを行う場合は、
#       rvm1_userを'root'に設定してください
rvm1_user: 'ubuntu'

# 最新のインストーラスクリプトのURL
rvm1_rvm_latest_installer: 'https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer'

# 使用するrvmのバージョン
rvm1_rvm_version: 'stable'

# rvmをチェックして更新 - これを無効にするとrvmは更新しません
rvm1_rvm_check_for_updates: True

# GPGキーの検証、スキップしたい場合は空文字列を使用
# 注:何をしているか分からない場合はそのままにしてください
#           身元証明:https://keybase.io/mpapis
#           PGPメッセージ:https://rvm.io/mpapis.asc
rvm1_gpg_keys: '409B6B1796C275462A1703113804BB82D39DC0E3'

# GPGキーサーバー
rvm1_gpg_key_server: 'hkp://pool.sks-keyservers.net'

# autolibモードについては、 https://rvm.io/rvm/autolibs を参照
rvm1_autolib_mode: 3

例プレイブック

---

- name: 単一ユーザー向けのRubyサポート付きサーバーの設定
  hosts: all

  roles:
    - { role: rvm.ruby,
        tags: ruby,
        rvm1_rubies: ['ruby-2.3.1'],
        rvm1_user: 'ubuntu'
      }

Rubyのバージョンのリストを渡したい場合は、次のように配列で渡します。

---
- name: システム全体のRubyサポート付きサーバーの設定
  hosts: all
  roles:
    - { role: rvm.ruby,
        tags: ruby,
        become: yes,

        rvm1_rubies: ['ruby-2.2.5','ruby-2.3.1'],
        rvm1_install_flags: '--auto-dotfiles',     # デフォルトから--user-installを削除
        rvm1_install_path: /usr/local/rvm,         # システム位置に設定
        rvm1_user: root                            # システム位置にアクセスするためにrootアカウントが必要
      }

rvm_rubiesは ruby-x.x.x 形式で指定する必要があります。つまり、 ruby 2.2.5を使用したい場合、配列として rvm_rubies: ['ruby-2.2.5'] を渡す必要があります。

システム全体のインストール

上記の例はシステム全体でRubyを設定します。rvm1_install_pathで指定されたシステム位置に書き込む必要があるため、通常はrootとしてプレイブックを実行することが重要です。

ansible_user と同じユーザーとして

この場合、rvm_install_path を上書きするだけで、デフォルトで --user-install フラグが設定されます:

rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/{{ ansible_user }}/.rvm'

ansible_user とは異なるユーザーにインストールする場合

ここでは rootアクセスが必要です。なぜなら、ansibleユーザーのホームディレクトリの外に書き込む必要があるからです。それ以外は上記と同じですが、異なるユーザーアカウントを指定します:

rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/someuser/.rvm'

rvm1_user についての簡単な注意点

場合によっては、rvmフォルダとそのファイルの所有を特定のユーザーにしたいことがあります。その場合は、rvm1_user: 'foo' と設定すれば、Rubyがインストールされる際に foo がrvmディレクトリを所有することができます。

Rubyの古いバージョンのアップグレードと削除

Rubyのバージョンをアップグレードする一般的なフローは以下の通りです:

  1. 新しいバージョンをインストール
  2. アプリケーションの役割を実行し、bundle installを再インストール
  3. 前のRubyバージョンを削除

Ansibleの --extra-vars を活用

プレイブックのコマンドの最後に --extra-vars 'rvm1_delete_ruby=ruby-2.1.0' を追加するだけで、そのバージョンが削除されます。

要件

  • CentOS 6および7でテスト済み
  • Debian 8および9でテスト済み
  • Ubuntu 14.04および16.04でテスト済み

Ansible Galaxy

評価したい場合は、公式のAnsible Galaxyで見つけることができます。

貢献

支援者

支援者になると、活動を続けるために少額の月額寄付でサポートしてください。

スポンサー

スポンサーになると、あなたのサイトへのリンク付きでGitHubのREADMEにロゴを掲載します。

ライセンス

MIT

プロジェクトについて

The official RVM role to install and manage your ruby versions

インストール
ansible-galaxy install silverlogic.rvm
ライセンス
mit
ダウンロード
7.7k
所有者