utuntu18.04にansible-playbookを実行したらpython: not foundになった時の対処

Posted by roadman on Tuesday, December 18, 2018

TOC

現象

  • ubuntu18.04のサーバにansibleでセットアップしようとしたら、以下のエラーがでた。pythonコマンドが見つからないという。
$ ansible-playbook -i staging server_provision.yml -C -v                                                                                                                                   

PLAY [web02] ******************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************
fatal: [stg.server]: FAILED! => {"changed": false, "module_stderr": "Shared connection to 35.***.***.*** closed.\r\n", "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 127}
        to retry, use: --limit @/Users/user01/playbook/gce_server_provision.retry

PLAY RECAP ****************************************************************************************************************************
stg.server : ok=0    changed=0    unreachable=0    failed=1   
  • 今時のubuntuでpythonがないなんてことあるんかいな…と思ってサーバ上で確認するうとpython3という名前では使える。python2とpython3の同居のためなのか、pythonという名前にはlinkしていないようだ。
  • 対処法を探してみると、ansibleのFAQに以下のような説明があった。
  • 要点だけ書くと「inventryファイルの任意のホストに変数ansible_python_interpreterでインタプリタを指定すればそれで置換するよ。」とのこと。

対処

  • inventoryに以下をのように記述を追加した。
[web02]
stg.server   ansible_python_interpreter=/usr/bin/python3
  • 再度、ansible-playbookしたらうまく行った。
  • pythonの2と3の奴には、何年経ってもたまにつまづくね。。。