Help us understand the problem. What is going on with this article?

Ansibleでシェル設定の再読み込みが必要になった場合の対応

More than 5 years have passed since last update.

Ansibleでシェルの設定ファイル(以下、bashを使用する前提で記述する)に設定の追加が必要なソフトウェア(rbenvやnodebrew, VirtualenvWrapperなど)をインストールする場合、以下のように書いても上手く動作しない。

    # ~/.bashrc(~/.bash_profile) にrbenvの設定を追記する
    - name: Set rbenv config
      copy: src=files/bashrc dest=~/.bashrc
    # ~/.bashrcに書き込んだ設定を読み込む
    - name: Load rbenv setting
      shell: source ~/.bashrc executable=/bin/bash
    - name: Install ruby 2.1.2
      shell: rbenv install 2.1.2 && rbenv rehash && rbenv global 2.1.2 executable=/bin/bash

上記の例ではrbenv installを実行する時点でsource ~/.bashrcの結果が反映されていない(別シェルで起動)ため、rbenvコマンドが見えずにエラーとなる。

*同様の内容の記事では、.bash_profileではなく.bashrc(bash起動時に毎回読み込み)に必要な設定を書き込むことで上手くいったとの事だが、自身の環境では.bashrcに書き込んだ際も上手くいかなかった。
http://qiita.com/volanja/items/3a263ab8df34af6870d5

bashの設定をコマンド実行時に反映させたい場合、lオプションによりログインシェルとして起動する必要がある。

    # ~/.bashrc(~/.bash_profile) にrbenvの設定を追記する
    - name: Set rbenv config
      copy: src=files/bashrc dest=~/.bashrc
    # lオプションによりログインシェルとしてbashを起動する
    - name: Install ruby 2.1.2
      shell: /bin/bash -lc "rbenv install 2.1.2 && rbenv rehash && rbenv global 2.1.2"

(ref.) https://github.com/zzet/ansible-rbenv-role/blob/master/tasks/main.yml#L116

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした