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の奴には、何年経ってもたまにつまづくね。。。