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