Ansible souceコマンドを実行するならshellモジュールで

Ansibleで環境変数を追加するタスクを実行した後に反映したくて、
source ~/.bash_profileを実行するタスクを実施したらエラーとなってしまった。

TASK: [setup/ruby | reflect .bash_profile] ************************************
failed: [awshost] => {"cmd": "source /root/.bash_profile", "failed": true, "rc":                     2}
msg: [Errno 2] No such file or directory

FATAL: all hosts have already failed -- aborting

調べたところsourceはshellのビルドインモジュールらしいので、shellモジュールで実施せよとのことであった。
以下のように記述したら問題なかった。

基本的にOSコマンドをAnsibleで実施したい場合は、Commandモジュールを使うのがよいのだが、今回のsourceコマンドのみならず、Shellモジュールじゃないとできないこと(パイプやリダイレクト)も多いので注意である。

- name: reflect .bash_profile
  shell: source ~/.bash_profile
カテゴリー: Ansible パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload the CAPTCHA.