インフラエンジニアbacchiのわかったことまとめ

bacchi.me

Ansibleでrvmをインストールして、任意のバージョンのRubyをインストール

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

  • B!