Ubuntu 16.04ではbecomeでsudoコマンドが実行できました。
CentOS 7では失敗したのでそのときのメモです。
現象
playbookを実行すると次のようなエラーが出ていました。
fatal: [centos7-ansible]: FAILED! => {"changed": false, "failed": true, "module_stderr": "Shared connection to centos7-ansible closed.\r\n", "module_stdout": "sudo: パスワードが必要です\r\n", "msg": "MODULE FAILURE"}
sudoコマンドを使うと/var/log/secureに記録が残るはずなので、ログを見てみました。
Mar 16 15:57:12 centos7-ansible sudo: kana : パスワードが必要です ; TTY=pts/1 ; PWD=/home/kana ; USER=root ; COMMAND=/bin/sh -c echo BECOME-SUCCESS-ukaqunoclwycsbcuqnmdhsankdxabzzn; /usr/bin/python /home/kana/.ansible/tmp/ansible-tmp-1489647431.88-40170640578302/setup.py; rm -rf "/home/kana/.ansible/tmp/ansible-tmp-1489647431.88-40170640578302/" > /dev/null 2>&1
Ansibleと同様のエラー内容が表示されています。
sudoコマンドの挙動を変更
調べていると、ansible.cfgでsudoコマンドの挙動を変更できるようです。
パッケージでインストールすると、設定ファイルは次の場所にあります。
/etc/ansible/ansible.cfg
[default]の直下に次の一文を追記しました。
[defaults]
sudo_flags = -H -S
まとめ
結果、実行はできるようになりましたが、
# WARNING: leaving out the defaults might create unexpected behaviours
とあるように、playbook全体に影響がないか確認しておいたほうがよさそうです。