Ansible: module_stdout: "/ bin / sh:1:/ usr / bin / python:見つかりません\ r \ n"、

作成日 2016年12月21日  ·  19コメント  ·  ソース: ansible/ansible

ansible -m ping -u ubuntu us-west-2a
35.166.197.222 | 失敗した! => {
「変更された」:false、
「失敗」:true、
"module_stderr": "35.166.197.222への共有接続が閉じられました。\ r \ n"、
"module_stdout": "/ bin / sh:1:/ usr / bin / python:見つかりません\ r \ n"、
"msg": "MODULE FAILURE"
}

affects_2.3 needs_info needs_template

最も参考になるコメント

インベントリファイルでansible_python_interpreter=/usr/bin/python3を使用するだけです

全てのコメント19件

課題テンプレートを削除するのではなく、使用してください。これは、実用的または有用なバグレポートではありません。 デフォルトのpython3がインストールされていないUbuntu16 +などを実行していると思われますが、完全なバグレポートがないとわかりません。

AWSの最新のイメージには、使用可能なPythonがインストールされていません...これをプレタスクとして追加する必要があります。

  pre_tasks:

    - name: Refresh apt cache
      become: no
      local_action: shell ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 {{ inventory_hostname }} sudo apt-get update

    - name: Install Python-apt to pull in Python
      become: no
      local_action: shell ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 {{ inventory_hostname }} sudo apt-get install --no-install-recommends --assume-yes python-apt

AMIをAnsibleとうまく連携させるには、これをタスクで使用する必要があります。

Ubuntu XenialにはデフォルトでPython3がインストールされており、 /usr/bin/python3あると思います(私にはよくわかりませんが)。

この回答を参照してください: http

初期化タスクのファクト収集を無効にすることが重要であることに注意してください。

ええ、Pythonインタープリターのパスは実行時に次のように指定できます
-e'ansible_python_interpreter = / usr / local / bin / python 'スクリプトの実行中。

しかし、Pythonインタープリターパスに言及できる方法がansible構成ファイルにある必要がありますか、それともそこにありますか?

そこにない場合は、実装する必要があります。

インベントリファイルでansible_python_interpreter=/usr/bin/python3を使用するだけです

@ guruprasad85この問題はあなたの応答を待っています。 返信しないと、問題は解決されます。

ボットのヘルプについては、ここをクリックしてください

@ guruprasad85ご挨拶! この号を開くために時間を割いていただきありがとうございます。 コミュニティがあなたの問題を効果的に処理するために、私たちはもう少し情報が必要です。

説明で見つからなかったアイテムは次のとおりです。

  • 問題の種類
  • ansibleバージョン
  • コンポーネント名

このテンプレートを使用して、この問題の説明を設定してください。
https://raw.githubusercontent.com/ansible/ansible/devel/.github/ISSUE_TEMPLATE.md

ボットのヘルプについては、ここをクリックしてください

python2が必要だったので、最初のタスクとして追加しました。

- name: dependency provisioning
  hosts: all
  become: yes
  become_method: sudo
  gather_facts: false
  tasks:
    - name: install python2
      raw: sudo apt-get -y install python-simplejson

詳細はこちら

@ guruprasad85この問題はあなたの応答を待っています。 返信しないと、問題は解決されます。

ボットのヘルプについては、ここをクリックしてください

上記の説明は、この問題を解決するのに十分です。

いくつかの追加の読書:

http://docs.ansible.com/ansible/faq.html#how -do-i-handle-python-pathing-not-having-a-python-2-x-in-usr-bin-python-on- a-リモートマシン

さらに質問がある場合は、IRCまたはメーリングリストに立ち寄ってください。

  • IRC:irc.freenode.netで#ansible
  • メーリングリスト: https ://groups.google.com/forum/#!forum / ansible -project

_Gathering Facts_を無効にして、これを本に入れることもできます

- hosts: anything
  gather_facts: False

@bcoca @sivelこれを再検討する計画はありますか? /usr/bin/pythonが利用できない場合、Ansibleは少なくとも/usr/bin/python3 (または必要に応じて/usr/bin/python2 )の使用を試みる必要があるように思われます。
@SpamapSは、AW​​S上の公式/usr/bin/python3のみ出荷されると報告しました:

ubuntu@ip-172-16-178-247:~$ uname -a
Linux ip-172-16-178-247 4.4.0-1065-aws #75-Ubuntu SMP Fri Aug 10 11:14:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@ip-172-16-178-247:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:    16.04
Codename:   xenial
ubuntu@ip-172-16-178-247:~$ ls -al /usr/bin |grep python
lrwxrwxrwx  1 root   root          26 May 18  2016 dh_pypy -> ../share/dh-python/dh_pypy
lrwxrwxrwx  1 root   root          29 May 18  2016 dh_python3 -> ../share/dh-python/dh_python3
lrwxrwxrwx  1 root   root          23 Nov 28  2017 pdb3.5 -> ../lib/python3.5/pdb.py
lrwxrwxrwx  1 root   root          31 Mar 23  2016 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx  1 root   root          26 May 18  2016 pybuild -> ../share/dh-python/pybuild
lrwxrwxrwx  1 root   root           9 Mar 23  2016 python3 -> python3.5
-rwxr-xr-x  2 root   root     4464400 Nov 28  2017 python3.5
-rwxr-xr-x  2 root   root     4464400 Nov 28  2017 python3.5m
-rwxr-xr-x  1 root   root         976 Nov 27  2015 python3-jsondiff
-rwxr-xr-x  1 root   root        3662 Nov 27  2015 python3-jsonpatch
-rwxr-xr-x  1 root   root        1342 Oct 24  2015 python3-jsonpointer
lrwxrwxrwx  1 root   root          10 Mar 23  2016 python3m -> python3.5m

後世のために、これはAnsibleの既知の改善の機会であり、2.8以上のロードマップに含めることを検討しています。

私の場合(ansible 2.7.0):
myIp | 失敗した! => {
「変更された」:false、
"module_stderr": ""、
"module_stdout": "/ bin / sh:/ usr / bin / python:そのようなファイルまたはディレクトリはありません\ r \ n"、
"msg": "MODULE FAILURE \ n正確なエラーについては、stdout / stderrを参照してください"、
「rc」:127
}

$ ll | grep python
lrwxrwxrwx1ルートルート32Jun 5 15:44 kylinpy-> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx1ルートルート34 2016年11月16日python-> / usr / local / python2.7 / bin / python2.7
lrwxrwxrwx1ルートルート6 2016年9月8日python2-> python
-rwxr-xr-x1ルートルート4864 2014年5月29日python2.6
-rwxr-xr-x1ルートルート1418 2014年5月29日python2.6-config

ソフトリンクも機能しないのはなぜですか?

私の場合(ansible 2.7.0):
myIp | 失敗した! => {
「変更された」:false、
"module_stderr": ""、
"module_stdout": "/ bin / sh:/ usr / bin / python:そのようなファイルまたはディレクトリはありません\ r \ n"、
"msg": "MODULE FAILURE \ n正確なエラーについては、stdout / stderrを参照してください"、
「rc」:127
}

$ ll | grep python
lrwxrwxrwx1ルートルート32Jun 5 15:44 kylinpy-> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx1ルートルート34 2016年11月16日python-> / usr / local / python2.7 / bin / python2.7
lrwxrwxrwx1ルートルート6 2016年9月8日python2-> python
-rwxr-xr-x1ルートルート4864 2014年5月29日python2.6
-rwxr-xr-x1ルートルート1418 2014年5月29日python2.6-config

ソフトリンクも機能しないのはなぜですか?

申し訳ありませんが、それは私のせいです。ソフトリンクを使用してください、それは動作します

単純な: ln -s / usr / bin / python3 / usr / bin / pythonは私の問題を解決しました

インベントリファイルでansible_python_interpreter=/usr/bin/python3を使用するだけです

おかげで、それは今動作します

これには、 pyenv pyenv global <version>問題があるようです。

それはそれをシムする必要がありますが、Ansibleはpythonコマンドを使用するのではなく、 /usr/bin/pythonを見るようにハードコーディングされていると思いますか?

もしそうなら、これは変わる可能性がありますか? または、使用できる回避策はありますか?

もしそうなら、これは変わる可能性がありますか?

いいえそうではありません。

/usr/bin/python以外のものを使用する場合は、 ansible_python_interpreterをPythonインタープリターに明示的に設定する必要があります。

pyenvの場合、シム( which python3.6 )または実際のバイナリ( pyenv which python3.6 )へのパスである可能性があります。 多くの場合、シェル拡張を使用できないようにハードコーディングする必要があることに注意してください。

このページは役に立ちましたか?
0 / 5 - 0 評価