経緯とかは後で書くとして、こちらがソース
対応策としては ansible_connection = ssh
を使って localhost でも ssh 接続にすれば解決する。
経緯
今までセットアップできてたのに突然落ちるように
自分のメインのPCとして Ubuntu をデスクトップに突っ込んでいて、最近 Ansible でセットアップができるようにしようとコツコツと playbook を作っていたのだけど、今日久々に内容を更新して実行したら
fatal: [127.0.0.1]: FAILED! => {"failed": true, "msg": "ERROR! privilege output closed while waiting for password prompt:\nBECOME-SUCCESS-ivlqlqubbijeusfhqiyftxjknfjzqgbm\n{\"invocation\": {\"module_args\": {\"executable\": null, \"name\": \"gulp\", \"global\": true, \"ignore_scripts\": false, \"state\": \"present\", \"production\": false, \"registry\": null, \"version\": null, \"path\": null}}, \"changed\": false}\n"}
なんてエラーが出てきた。
priviledge output closed while waiting for password prompt
とか出てるけど、 --ask-become-pass
でパスワードは渡してるから何がなにやら。
ごにょごにょ調べるも中々見つからず
似たような文は当たるけど --ask-sudo-pass
の仕方が悪いよ〜みたいなもので、今回とはちょっと違うのしかヒットしない。
多分 Ansible 2.0 に変えたのが原因
今までは平気だったのに突然ダメになるんだから何か原因があるんだろうって考えたらどう考えても Ansible 2.0 にしたのが原因だろうなと気づいたので ansible 2
みたいなキーワードも入れて調べてみたらこんな記事を発見。
ちょうどこのエラーが起きてるところは with_items
使ってるし怪しい -"- と思い見てみると案の定の様子。
An evidence is that the playbook above works finewith localhost ansible_ssh_host=127.0.0.1 setting
in the inventory instead of localhost ansible_connection=local.
とあったので ansible.cfg
で ansible_connection = local
としていた部分を ansible_connection = ssh
にしてもう一度実行したらうまく動作してくれた。
まだ issue は開いているけどプルリクはマージされてるみたいだから近々修正されてくれることを期待してる。
そんな感じで