Pocket

メインPCのUbuntuをansibleで設定しようとしたら、"The following modules failed to execute: setup\n setup: MODULE FAILURE\nSee stdout/stderr for the exact error\n"のエラーが。

試しに、playbook ymlのbecome: Trueをbecome: Falseにしたら、エラーなしで実行できました。メインPCのログインユーザーをsudo NOPASSWDにしていないのに、ansibleにsudoパスワードを指定していないことが原因でした。

対応方法1: --ask-become-pass オプション

ansible-playbookを実行するとき、コマンドラインオプション --ask-become-pass をつけてください。BECOME password: のプロンプトが表示されるので、sudoパスワードを入力してください。

対応方法2: sudoパスワード不要に設定する

ansibleの接続ユーザをsudoパスワード不要にすることでも、さきほどのansibleエラーはなくなります。

例えば、ユーザーtaroのsudoパスワードを不要にするときは、visudoコマンドを使って、/etc/sudoers.d/taroファイルを新規作成、編集します。

保存終了するときは、viの操作どおり、ESC、コロン、wq と操作します。構文エラーがあると、

と聞かれるので、「e」で編集継続します。

構文エラーで、sudoを実行できなくなったとき

うっかり、構文エラーのまま保存終了してしまうと、sudoを実行できなくなります。

そうなってしまったら、sudoではなく、pkttyagentコマンドとpkexecコマンドを使います。ターミナルを2つ開きます。

ターミナル1で、pkttyagentコマンドを実行してください。

ターミナル2で、pkexecコマンドを実行してください。パスワード入力のダイアログが表示されるので、パスワードを入力してください。

ターミナル2の作業が終わったら、ターミナル1で、Ctrl + C を押して、pkttyagentを終了してください。