Ansibleでsudoに失敗するとき

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全体に影響がないか確認しておいたほうがよさそうです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です