Edited at

rbenvをインストール・設定するAnsibleのPlaybook(Vagrantfileもあり)

More than 3 years have passed since last update.


はじめに

CentOS6等でruby 2.xを利用したい(Serverspecを使いたい)などで、

rubyのバージョンをあげるためにrbenvのインストールと設定を行う

Ansibleのplaybookを作成しました。

pyenvはこちら

http://qiita.com/tbuchi888/items/d44d15dcc6f63ae440d9


構築の主な手順

CentOSに対して以下をrootで実施します

1. rbenvのインストール

2. rubyバージョン2.2.3のインストール


site.yml

---

- include: install_rbenv_without_proxy.yml

以下playbookのvars: ruby_ver: 2.2.3でrbenvでインストール・設定するrubyのバージョン指定を行っていますので適宜変更して利用してください。

また、rbenvのインストール後に、続けてServerspecなどをgemでインストールしたい場合は

# Please remove the following comment '#' when you want to do, for example,gem install Serverspecusing rbenv.

より下の行のをコメントを外して、適宜インストール対象を変更してご利用ください。

なお、rbenvでは、仕組み上~/.bash_profileでrubyのバージョンを指定を実施しているので、Ansible等でrubyのコマンドを実行する場合は、コマンド実行前にsource ~/.bash_profile;とつけて、~/.bash_profileを事前に読込むところがポイントです。


install_rbenv_without_proxy.yml

---

- hosts: all
gather_facts: no
become: yes
vars:
ruby_ver: 2.2.3
tasks:
- name: check install rbenv by which command
shell: source ~/.bash_profile; which rbenv
register: rbenv_install
failed_when: rbenv_install.rc == 0

- block:
- debug: msg="---------- block start ----------"
- name: yum install
yum:
name: '{{ item.name }}'
state: '{{ item.state }}'
register: RESULT
with_items:
- name: gcc
state: latest
- name: zlib-devel
state: latest
- name: openssl-devel
state: latest
- name: mysql-server
state: latest
- name: mysql-devel
state: latest
- name: libffi-devel
state: latest
- name: libxml2-devel
state: latest
- name: libxslt-devel
state: latest
- name: httpd-devel
state: latest
- name: curl-devel
state: latest
- name: apr-devel
state: latest
- name: apr-util-devel
state: latest
- name: readline-devel
state: latest
- name: ImageMagick
state: latest
- name: ImageMagick-devel
state: latest
- name: git
state: latest
- name: rubygems
state: latest
- name: results
debug: var=RESULT.results

- name: git clone rbenv,ruby-build
git:
repo: '{{ item.repo }}'
dest: '{{ item.dest }}'
register: RESULT
with_items:
- repo: https://github.com/sstephenson/rbenv.git
dest: ~/.rbenv
- repo: https://github.com/sstephenson/ruby-build.git
dest: ~/.rbenv/plugins/ruby-build
- name: results
debug: var=RESULT.results

- name: install rbenv and ruby
shell: '{{ item.cmd }}'
register: RESULT
with_items:
- cmd: echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
- cmd: echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
- cmd: source ~/.bash_profile; rbenv -v
- cmd: source ~/.bash_profile; rbenv install '{{ ruby_ver }}'
- cmd: source ~/.bash_profile; rbenv rehash
- cmd: source ~/.bash_profile; rbenv global '{{ ruby_ver }}'
- cmd: source ~/.bash_profile; rbenv rehash
- cmd: source ~/.bash_profile; ruby -v
- name: results
debug: var=RESULT.results

# Please remove the following comment '#' when you want to do, for example, `gem install Serverspec` using rbenv.
# - name: install serverspec and ansiblespec
# shell: '{{ item.cmd }}'
# register: RESULT
# with_items:
# - cmd: source ~/.bash_profile; gem install serverspec
# - cmd: source ~/.bash_profile; gem install ansible_spec
# - name: results
# debug: var=RESULT.results

- debug: msg="---------- block end ----------"
when: rbenv_install.rc == 1



以下はVagrant環境の場合

vagrant upにてCentOS6のServer起動とAnsible provisonerを利用してrbenv環境の構築と設定を行います。

なお、boxファイル名については、適時自環境のファイル名に置き換えて利用してください

Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :

Vagrant.configure(2) do |config|
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
# Please replace it with a BOX name of CentOS6 for one's own 32bit when your host is 32bit machine.
config.vm.box = "geerlingguy/centos6"

# Add ansible provisioner
config.vm.provision "ansible" do |ansible|
ansible.playbook = "site.yml"
end
end


 使い方

- OSX等でAnsible provisonerが利用できるVagrant環境の場合

  - 上記playbook等資材を用意した上でvagrant upしてください。

- Ansible環境のみの場合

  - インベントリホストファイルを各自用意してCentOS6サーバに対してPlaybookを実行してください。ansible-playbook -i インベントリファイル site.yml


上記プレイブック等の実行環境


Ansible provisioner and Vagrant,Virtulbox Host

 - OS:OSX yosemite

 - Virtulbox:バージョン 5.0.10 r104061

 - Vagrant: Vagrant 1.8.1

 - Ansible:

$ansible --version

ansible 2.1.0 (devel c600ab81ee) last updated 2016/04/20 11:11:25 (GMT +900)
lib/ansible/modules/core: (detached HEAD 98322a777f) last updated 2016/04/20 11:11:54 (GMT +900)
lib/ansible/modules/extras: (detached HEAD 1aecfc1e19) last updated 2016/04/20 11:11:55 (GMT +900)
config file =
configured module search path = Default w/o overrides


rbenv install Server

- OS: CentOS6.8