質問編集履歴

2 同様の悩みでここに来た人の為、最終的に採用したのをメモしておきます。

chrokurojp

chrokurojp score 24

2016/07/26 12:59  投稿

Ansibleでrbenvをシステムワイドインストールする際にsource反映されないのでうまくインストールされない
Ansibleでrbenvをシステムワイドインストールする際にsource反映されないのでうまくインストールされない
下記ページのように
http://d.hatena.ne.jp/t_yamo/20150723/1437660326
```ここに言語を入力
shell: /bin/bash -lc "rbenv install {{ ruby.version }} && rbenv rehash && rbenv global {{ ruby.version }}"
```
とするとエラーはないもののruby -vしてみると入っていないような結果が帰ってきます。
下が僕が実際に使っているymlです。
実行環境はcentOS 7です。
```yml
---
---
- hosts: 127.0.0.1
 become: yes
 tasks:
 # 【Roles : rbenv】
 - name: Remove old directory
   shell: rm -rf /usr/local/opt/rbenv /usr/local/opt/rbenv/plugins/ruby-build /usr/local/opt/rbenv/plugins/rbenv-gemset
 - name: Git clone rbenv
   shell: git clone https://github.com/sstephenson/rbenv.git /usr/local/opt/rbenv
 - name: echo 'export RBENV_ROOT="/usr/local/opt/rbenv"' > /etc/profile.d/rbenv.sh
   shell: echo 'export RBENV_ROOT="/usr/local/opt/rbenv"' > /etc/profile.d/rbenv.sh
 - name: echo 'export PATH="$RBENV_ROOT/bin:$PATH"'     >> /etc/profile.d/rbenv.sh
   shell: echo 'export PATH="$RBENV_ROOT/bin:$PATH"'     >> /etc/profile.d/rbenv.sh
 - name: echo 'eval "$(rbenv init -)"'                  >> /etc/profile.d/rbenv.sh
   shell: echo 'eval "$(rbenv init -)"'                  >> /etc/profile.d/rbenv.sh
 - name: Git clone ruby-build
   shell: git clone https://github.com/sstephenson/ruby-build.git /usr/local/opt/rbenv/plugins/ruby-build
 - name: Git clone rbenv-gemset
   shell: git clone https://github.com/jamis/rbenv-gemset.git    /usr/local/opt/rbenv/plugins/rbenv-gemset
 - name: Reflection rbenv.sh
   shell: /bin/bash -l /etc/profile.d/rbenv.sh
 - name: Rbenv local install
   shell: rbenv install $(rbenv install -l | grep -v - | tail -1)
 - name: Gem install
   shell: yum install -y gem
 - name: Install bundler
   shell: RBENV_VERSION=$(rbenv install -l | grep -v - | tail -1) gem install bundler
 - name: Rbenv global install
   shell: rbenv global $(rbenv install -l | grep -v - | tail -1)
```
シェル版
```
#!/bin/sh
# ruby-buildに必要なパッケージをインストールする
# OS毎に必要なパッケージの一覧がruby-buildのWikiに記載されているので、最新版の一覧はWiki参照
# https://github.com/sstephenson/ruby-build/wiki
yum install -y gcc openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel
git clone https://github.com/sstephenson/rbenv.git /usr/local/opt/rbenv
echo 'export RBENV_ROOT="/usr/local/opt/rbenv"' >> /etc/profile.d/rbenv.sh
echo 'export PATH="$RBENV_ROOT/bin:$PATH"'     >> /etc/profile.d/rbenv.sh
echo 'eval "$(rbenv init -)"'                  >> /etc/profile.d/rbenv.sh
git clone https://github.com/sstephenson/ruby-build.git /usr/local/opt/rbenv/plugins/ruby-build
git clone https://github.com/jamis/rbenv-gemset.git    /usr/local/opt/rbenv/plugins/rbenv-gemset
source /etc/profile.d/rbenv.sh
rbenv install -l
# list of versions available
# ruby ローカル インストール
rbenv install $(rbenv install -l | grep -v - | tail -1)
# ruby version globalなgemとしてbundlerをインストールする
RBENV_VERSION=$(rbenv install -l | grep -v - | tail -1) gem install bundler
# ruby グローバル インストール
rbenv global $(rbenv install -l | grep -v - | tail -1)
# ruby 確認
ruby -v
```  
 
最終的にコレに落ち着きました。  
```  
---  
- hosts: 127.0.0.1  
 become: yes  
 vars:  
   - ver_ruby: 2.2.3  
 tasks:  
 # 【Roles : rbenv】  
 - name: Remove old directory rbenv  
   file: path=/usr/local/opt/rbenv state=absent  
 
 - name: Remove old directory ruby-build  
   file: path=/usr/local/opt/rbenv/plugins/ruby-build state=absent  
 
 - name: Remove old directory rbenv-gemset  
   file: path=/usr/local/opt/rbenv/plugins/rbenv-gemset state=absent  
 
 - name: Git clone rbenv  
   git:  
     repo=https://github.com/sstephenson/rbenv.git  
     dest=/usr/local/opt/rbenv  
     accept_hostkey=yes  
 
 - name: /usr/local/opt/rbenv rbenv.sh  
   shell: echo 'export RBENV_ROOT="/usr/local/opt/rbenv"' > /etc/profile.d/rbenv.sh  
 
 - name: $RBENV_ROOT/bin:$PATH rbenv.sh  
   shell: echo 'export PATH="$RBENV_ROOT/bin:$PATH"'     >> /etc/profile.d/rbenv.sh  
 
 - name: eval "$(rbenv init -)" rbenv.sh  
   shell: echo 'eval "$(rbenv init -)"'                  >> /etc/profile.d/rbenv.sh  
 
 - name: Git clone ruby-build  
   git:  
     repo=https://github.com/sstephenson/ruby-build.git  
     dest=/usr/local/opt/rbenv/plugins/ruby-build  
     accept_hostkey=yes  
 
 - name: Git clone rbenv-gemset  
   git:  
     repo=https://github.com/jamis/rbenv-gemset.git  
     dest=/usr/local/opt/rbenv/plugins/rbenv-gemset  
     accept_hostkey=yes  
 
 - name: rbenv install  
   shell: /bin/bash -lc "rbenv install {{ ver_ruby }} && rbenv rehash && rbenv global {{ ver_ruby }}"  
 
 - name: Gem install  
   yum: name=gem state=present  
 
 - name: exec $SHELL -l  
   shell: exec $SHELL -l  
```
  • Ruby

    12186 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • CentOS

    3737 questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Ansible

    216 questions

    Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

1 yml更新

chrokurojp

chrokurojp score 24

2016/07/19 13:28  投稿

Ansibleでrbenvをシステムワイドインストールする際にsource反映されないのでうまくインストールされない
Ansibleでrbenvをシステムワイドインストールする際にsource反映されないのでうまくインストールされない
下記ページのように
http://d.hatena.ne.jp/t_yamo/20150723/1437660326
```ここに言語を入力
shell: /bin/bash -lc "rbenv install {{ ruby.version }} && rbenv rehash && rbenv global {{ ruby.version }}"
```
とするとエラーはないもののruby -vしてみると入っていないような結果が帰ってきます。
下が僕が実際に使っているymlです。
実行環境はcentOS 7です。
```yml
---
---  
- hosts: 127.0.0.1
 become: yes
 # 【Roles : init】  
 tasks:
 # 【Roles : rbenv】
 - name: Remove old directory
   shell: rm -rf /usr/local/opt/rbenv /usr/local/opt/rbenv/plugins/ruby-build /usr/local/opt/rbenv/plugins/rbenv-gemset
 - name: Git clone rbenv
   shell: git clone https://github.com/sstephenson/rbenv.git /usr/local/opt/rbenv
 - name: echo 'export RBENV_ROOT="/usr/local/opt/rbenv"' > /etc/profile.d/rbenv.sh  
   shell: echo 'export RBENV_ROOT="/usr/local/opt/rbenv"' > /etc/profile.d/rbenv.sh  
 
 - name: echo 'export PATH="$RBENV_ROOT/bin:$PATH"'     >> /etc/profile.d/rbenv.sh  
   shell: echo 'export PATH="$RBENV_ROOT/bin:$PATH"'     >> /etc/profile.d/rbenv.sh  
 
 - name: echo 'eval "$(rbenv init -)"'                  >> /etc/profile.d/rbenv.sh  
   shell: echo 'eval "$(rbenv init -)"'                  >> /etc/profile.d/rbenv.sh  
 
 - name: Git clone ruby-build
   shell: git clone https://github.com/sstephenson/ruby-build.git /usr/local/opt/rbenv/plugins/ruby-build
 - name: Git clone rbenv-gemset
   shell: git clone https://github.com/jamis/rbenv-gemset.git    /usr/local/opt/rbenv/plugins/rbenv-gemset
 - name: Reflection rbenv.sh
   shell: source /etc/profile.d/rbenv.sh
   shell: /bin/bash -l /etc/profile.d/rbenv.sh
 - name: Rbenv local install
   shell: rbenv install $(rbenv install -l | grep -v - | tail -1)
 
 - name: Gem install  
   shell: yum install -y gem  
 - name: Install bundler
   shell: RBENV_VERSION=$(rbenv install -l | grep -v - | tail -1) gem install bundler
 - name: Rbenv global install
   shell: rbenv global $(rbenv install -l | grep -v - | tail -1)
```
シェル版
```
#!/bin/sh
# ruby-buildに必要なパッケージをインストールする
# OS毎に必要なパッケージの一覧がruby-buildのWikiに記載されているので、最新版の一覧はWiki参照
# https://github.com/sstephenson/ruby-build/wiki
yum install -y gcc openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel
git clone https://github.com/sstephenson/rbenv.git /usr/local/opt/rbenv
echo 'export RBENV_ROOT="/usr/local/opt/rbenv"' >> /etc/profile.d/rbenv.sh
echo 'export PATH="$RBENV_ROOT/bin:$PATH"'     >> /etc/profile.d/rbenv.sh
echo 'eval "$(rbenv init -)"'                  >> /etc/profile.d/rbenv.sh
git clone https://github.com/sstephenson/ruby-build.git /usr/local/opt/rbenv/plugins/ruby-build
git clone https://github.com/jamis/rbenv-gemset.git    /usr/local/opt/rbenv/plugins/rbenv-gemset
source /etc/profile.d/rbenv.sh
rbenv install -l
# list of versions available
# ruby ローカル インストール
rbenv install $(rbenv install -l | grep -v - | tail -1)
# ruby version globalなgemとしてbundlerをインストールする
RBENV_VERSION=$(rbenv install -l | grep -v - | tail -1) gem install bundler
# ruby グローバル インストール
rbenv global $(rbenv install -l | grep -v - | tail -1)
# ruby 確認
ruby -v
```
  • Ruby

    12186 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • CentOS

    3737 questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Ansible

    216 questions

    Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る