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

# はじめに
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 Serverspec` using 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

``` 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