shimgo
10/8/2017 - 11:23 AM

ログインシェルを変えてからshellモジュールを使うとcommand not foundエラー

リモートのユーザのログインシェルをzshに変更後、sudoなしでAnsibleのshellモジュールを使って rbenvを実行したところ、以下のエラーが出た。

/bin/sh: rbenv: command not found

そもそもzshじゃなくて/bin/shが使われているのが気になる。ログインシェルの変更をしないでおくと 普通にprofile.d/*.shを読んでrbenvが実行できる。

解決策

ログインシェルを変更したまま、Ansibleのshellモジュールにprofile.dを読ませる方法として ansible.cfgに設定を追加することにした。以下の設定によりshellモジュールで常にbashをログインシェル として起動するようになる。

[defaults]
executable = /bin/bash -l