Ansible: module_stdout: "/ bin / sh: 1: / usr / bin / python: غير موجود \ r \ n" ،

تم إنشاؤها على ٢١ ديسمبر ٢٠١٦  ·  19تعليقات  ·  مصدر: ansible/ansible

ansible -m ping -u ubuntu us-west-2a. أنسبل-إم بينغ-يو أوبونتو أوس-ويست-2 أ
35.166.197.222 | باءت بالفشل! => {
"تغيرت": خطأ ،
"فشل": صحيح ،
"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 كومينتر

الرجاء استخدام نموذج المشكلة بدلاً من حذفه - هذا ليس تقرير خطأ مفيد أو قابل للتنفيذ. أظن أنك تقوم بتشغيل Ubuntu 16+ أو أي شيء آخر بدون تثبيت python3 افتراضي ، لكن لا يمكننا معرفة ذلك بدون تقرير خطأ كامل.

لم يتم تثبيت Python على أحدث الصور في AWS ... تحتاج إلى إضافة هذا كمهمة مسبقة:

  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.

تم تثبيت Python3 بشكل افتراضي على Ubuntu Xenial وأعتقد أنه موجود في /usr/bin/python3 (لست متأكدًا تمامًا).

انظر هذه الإجابة: http://stackoverflow.com/questions/32429259/ansible-fails-with-bin-sh-1-usr-bin-python-not-found

لاحظ أنه من المهم تعطيل جمع الحقائق لمهام التهيئة.

نعم ، يمكن إعطاء مسار مترجم Python في وقت التشغيل كـ
-e 'ansible_python_interpreter = / usr / local / bin / python' أثناء تشغيل البرنامج النصي.

ولكن يجب أن يكون هناك طريقة ما في ملف التكوين غير القابل للكسر حيث يمكننا ذكر مسار مترجم بايثون أو هل هو موجود؟

إذا لم يكن هناك ، فلا بد من تنفيذه.

فقط استخدم ansible_python_interpreter=/usr/bin/python3 في ملف الجرد الخاص بك

@ guruprasad85 هذه المشكلة في انتظار ردكم. الرجاء الرد أو سيتم إغلاق القضية.

انقر هنا للحصول على مساعدة الروبوت

تضمين التغريدة شكرا لأخذ الوقت الكافي لفتح هذه القضية. لكي يتعامل المجتمع مع مشكلتك بفعالية ، نحتاج إلى مزيد من المعلومات.

فيما يلي العناصر التي لم نتمكن من العثور عليها في وصفك:

  • نوع القضية
  • نسخة غير قابلة للتصديق
  • اسم المكون

الرجاء تعيين وصف هذه المشكلة مع هذا النموذج:
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- جهاز التحكم عن بعد

إذا كان لديك المزيد من الأسئلة ، يرجى التوقف عن طريق IRC أو القائمة البريدية:

يمكنك أيضًا تعطيل _Gathering Facts_ ، ضع هذا في كتابك

- hosts: anything
  gather_facts: False

bcocasivel هناك أي خطط لإعادة النظر في هذا؟ يبدو لي أن Ansible يجب أن يحاول على الأقل استخدام /usr/bin/python3 (أو /usr/bin/python2 حسب الاقتضاء) إذا لم يكن /usr/bin/python متاحًا.
ذكرت SpamapS أن Ubuntu /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 | باءت بالفشل! => {
"تغيرت": خطأ ،
"module_stderr": ""،
"module_stdout": "/ bin / sh: / usr / bin / python: لا يوجد مثل هذا الملف أو الدليل \ r \ n" ،
"msg": "MODULE FAILURE \ n انظر stdout / stderr لمعرفة الخطأ الدقيق" ،
"RC": 127
}

$ ll | grep python
lrwxrwxrwx 1 جذر الجذر 32 يونيو 5 15:44 kylinpy -> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx 1 root root 34 Nov 16 2016 python -> /usr/local/python2.7/bin/python2.7
lrwxrwxrwx 1 root root 6 Sep 8 2016 python2 -> python
-rwxr-xr-x 1 جذر الجذر 4864 29 مايو 2014 python2.6
-rwxr-xr-x 1 جذر الجذر 1418 29 مايو 2014 python2.6-config

لماذا لا تعمل softlink أيضًا؟

في حالتي (ansible 2.7.0):
myIp | باءت بالفشل! => {
"تغيرت": خطأ ،
"module_stderr": ""،
"module_stdout": "/ bin / sh: / usr / bin / python: لا يوجد مثل هذا الملف أو الدليل \ r \ n" ،
"msg": "MODULE FAILURE \ n انظر stdout / stderr لمعرفة الخطأ الدقيق" ،
"RC": 127
}

$ ll | grep python
lrwxrwxrwx 1 جذر الجذر 32 يونيو 5 15:44 kylinpy -> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx 1 root root 34 Nov 16 2016 python -> /usr/local/python2.7/bin/python2.7
lrwxrwxrwx 1 root root 6 Sep 8 2016 python2 -> python
-rwxr-xr-x 1 جذر الجذر 4864 29 مايو 2014 python2.6
-rwxr-xr-x 1 جذر الجذر 1418 29 مايو 2014 python2.6-config

لماذا لا تعمل softlink أيضًا؟

آسف ، هذا خطأي استخدم softlink ، إنه يعمل

بسيط: ln -s / usr / bin / python3 / usr / bin / python حل

فقط استخدم ansible_python_interpreter=/usr/bin/python3 في ملف الجرد الخاص بك

شكرا ، إنه يعمل الآن

يبدو أن هذا به مشكلات مع pyenv pyenv global <version> .

يجب أن يزيلها ، لكني أعتقد أن Ansible مشفر بشكل صارم للنظر إلى /usr/bin/python ، بدلاً من مجرد استخدام الأمر python ؟

إذا كان الأمر كذلك ، فهل من المحتمل أن يتغير هذا؟ أو هل هناك حل بديل يمكنني استخدامه؟

إذا كان الأمر كذلك ، فهل من المحتمل أن يتغير هذا؟

لا ليست كذلك.

ستحتاج إلى تعيين ansible_python_interpreter صراحة لمترجم Python إذا كنت تريد استخدام شيء آخر غير /usr/bin/python .

والذي في حالة pyenv المحتمل أن يكون مجرد المسار إلى الرقاقة ( which python3.6 ) أو إلى الثنائي الحقيقي ( pyenv which python3.6 ). لاحظ ، في كثير من الحالات ، تحتاج إلى ترميز ثابت ولا يمكنك استخدام توسيع shell.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات