Ansibleでrvmをインストールして、任意のバージョンのRubyをインストールする手順をざっくりとご紹介します。
rubyイントール用のroleを切って、playbookを作る
以下のplaybookを作ります。
下記のplaybookのディレクトリは私の環境のものなので、書き換えてください。
---
# prepare for building Ruby
- name: be sure ruby basic package is installed
yum: name={{ item }} conf_file=/etc/yum.conf.noexclude enablerepo=epel state=present
with_items:
- gcc-c++
- patch
- readline
- readline-devel
- zlib
- zlib-devel
- libyaml-devel
- libffi-devel
- openssl-devel
- make
- bzip2
- autoconf
- automake
- libtool
- bison
- sqlite-devel
ignore_errors: yes
- name: be sure gem does not generate documents
lineinfile: "dest=/home/bacchi/.gemrc regexp='^gem:' line='gem: --no-ri --no-rdoc' state=present create=yes"
ignore_errors: yes
sudo_user: bacchi
- name: be sure gem does not generate documents
lineinfile: "dest=/home/bacchi/.gemrc regexp='^gem:' line='gem: --no-ri --no-rdoc' state=present create=yes"
ignore_errors: yes
sudo_user: bacchi
# import a key from a url
- shell: gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 creates=/home/bacchi/.gnupg/pubring.gpg
sudo_user: bacchi
# install RVM and Ruby
- name: install rvm
shell: curl -sSL https://get.rvm.io | bash -s stable creates=/home/bacchi/.rvm/LICENCE
sudo_user: bacchi
changed_when: False
- name: check ruby version
command: /bin/bash -l -c "which ruby"
register: ruby_version_check
changed_when: '"/home/bacchi/.rvm/rubies/ruby-{{ ruby_version }}/bin/ruby" not in ruby_version_check.stdout'
sudo_user: bacchi
ignore_errors: yes
always_run: yes
- name: install ruby
command: /bin/bash -l -c "rvm install {{ ruby_version }} && rvm --default {{ ruby_version }}"
sudo_user: bacchi
when: ruby_version_check|changed
notify:
- rvm_cleanup
# vim:ft=yaml
group_varsかhost_varsにインストールしたいRubyのバージョンを書く
こんな感じで、書いてください。
## Ruby version
ruby_version: "2.2.2"
ansible-playbookコマンドを叩く
site.ymlに落としこんで、ansible-playbookコマンドを実行すればOK