Ansible

ansible利用時に環境変数を読み込ませる際の注意点

More than 1 year has passed since last update.

Ansibleでreact.jsを使用する際、babelでコードをコンパイルする必要がある。
このbabelを利用する際に、nodeのバイナリに対してパスが通っている必要があるのだが、
環境変数の設定でかなり詰まってしまったので、ここにナレッジを提供する。

・やったこと

Webで検索してみると、Ansibleの"shell"モジュールを使い、以下の条件を満たすことで動作するようだったので、そのまま実行してみた。

 1.bashコマンドに-lcオプションを付与して実行する
 2.~/.bashrcにexportを追記して環境変数を読み込ませる。

なお、これは失敗した。

・解決方法

結論から言ってしまうと、ログインシェルとして実行する"bash -lc"を実行した上で、必ず"~/.bash_profile"に記載を追記するようにすること、が条件になる。

bashのmanを見たところ、どうも.bashrcはログインシェルではないインタラクティブシェルとして起動した際に読み込まれるのであって、ログインシェルとして起動した際には読み込まれないようだ。

何となく、"-l"オプションを付与しなければ".bashrc"でもイケそうな気はするが、これは後日調べる。

コマンドは以下のようになる。

- shell: echo "export PATH: $PATH:<追加したいパス" >> ~/.bash_profile
- shell: bash -lc "<実行したいコマンド>"