Python
Ansible
python3
ansible-playbook

Ansible2.5 syncronizeモジュールバグ リモートコピーできない件

概要

  • Ansibleでplaybook実行時syncronyzeモジュール(rsync的な)を使用したら謎のエラーに遭遇
  • リモートホストにコピー(同期)できない
  • 調査したらどうやらAnsible2.3以降のバグらしい
  • もはやダウングレードするのが一番の回避策っぽいので2.5から2.2へダウングレード
  • エラーは改善した
  • Pythonは3を使ってvirtualenv上の環境で発生しました。

エラー内容

TASK [rsync to remote] ****************************************************************************************************************************************
task path: /home/appuser/.ansible/deploy/include-tasks/app/deploy-remote-app.yml:13
Using module file /home/appuser/.pyenv/versions/3.6.5/envs/ansible-3.6.5/lib/python3.6/site-packages/ansible/modules/files/synchronize.py
<10.33.47.xxx> ESTABLISH LOCAL CONNECTION FOR USER: appuser
<10.33.47.xxx> EXEC /bin/sh -c 'echo ~None && sleep 0'
<10.33.47.xxx> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo ~None/.ansible/tmp/ansible-tmp-1528288448.485335-70755570096073 `" && echo ansible-tmp-1528288448.485335-70755570096073="` echo ~None/.ansible/tmp/ansible-tmp-1528288448.485335-70755570096073 `" ) && sleep 0'
<10.33.47.154> PUT /home/appuser/.ansible/tmp/ansible-local-7005wefvo28f/tmp7x45s940 TO ~None/.ansible/tmp/ansible-tmp-1528288448.485335-70755570096073/synchronize.py
fatal: [10.33.47.154]: FAILED! => {
    "msg": "failed to transfer file to ~None/.ansible/tmp/ansible-tmp-1528288448.485335-70755570096073/synchronize.py: [Errno 2] No such file or directory: b'~None/.ansible/tmp/ansible-tmp-1528288448.485335-70755570096073/synchronize.py'"
}
        to retry, use: --limit @/home/appuser/.ansible/deploy/include-tasks/app/deploy-remote-app.retry

ここでググる
https://github.com/ansible/ansible/issues/21562

結構議論されているみたい。みんな困ってるんですね。
2.2では再現しないと言っています。
釈然としないけれどその方法で対応

$ pyenv activate ansible-3.6.5
$ ansible --version
ansible 2.5.3
$ pip3 uninstall ansible
$ pip3 install ansible\==2.2.0
$ ansible --version
ansible 2.2.0.0

コピーできました(;-ω-`) フゥ…