Ansible: module_stdout: "/bin/sh: 1: /usr/bin/python: tidak ditemukan\r\n",

Dibuat pada 21 Des 2016  ·  19Komentar  ·  Sumber: ansible/ansible

mungkin -m ping -u ubuntu us-west-2a
35.166.197.222 | GAGAL! => {
"berubah": salah,
"gagal": benar,
"module_stderr": "Sambungan bersama ke 35.166.197.222 ditutup.\r\n",
"module_stdout": "/bin/sh: 1: /usr/bin/python: tidak ditemukan\r\n",
"msg": "MODULE GAGAL"
}

affects_2.3 needs_info needs_template

Komentar yang paling membantu

Cukup gunakan ansible_python_interpreter=/usr/bin/python3 di file inventaris Anda

Semua 19 komentar

Harap gunakan template masalah alih-alih menghapusnya- ini bukan laporan bug yang dapat ditindaklanjuti atau berguna. Saya menduga Anda menjalankan Ubuntu 16+ atau yang lainnya tanpa menginstal python3 default, tetapi kami tidak dapat mengetahuinya tanpa laporan bug lengkap.

Gambar terbaru di AWS tidak menginstal Python yang dapat digunakan... Anda perlu menambahkan ini sebagai tugas awal:

  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

Saya harus menggunakan ini dalam tugas saya untuk membuat AMI bekerja dengan baik dengan Ansible.

Ubuntu Xenial telah menginstal Python3 secara default dan saya pikir itu terletak di /usr/bin/python3 (saya tidak begitu yakin).

Lihat jawaban ini: http://stackoverflow.com/questions/32429259/ansible-fails-with-bin-sh-1-usr-bin-python-not-found

Perhatikan bahwa penting untuk menonaktifkan pengumpulan fakta untuk tugas inisialisasi.

Ya, jalur juru bahasa python dapat diberikan saat dijalankan sebagai
-e 'ansible_python_interpreter=/usr/local/bin/python' saat menjalankan skrip.

Tetapi harus ada beberapa cara dalam file konfigurasi yang memungkinkan di mana kita dapat menyebutkan jalur juru bahasa python ATAU apakah itu ada?

Jika tidak ada, maka perlu dilaksanakan.

Cukup gunakan ansible_python_interpreter=/usr/bin/python3 di file inventaris Anda

@guruprasad85 Masalah ini menunggu tanggapan Anda. Harap tanggapi atau masalah akan ditutup.

klik di sini untuk bantuan bot

@guruprasad85 Salam! Terima kasih telah meluangkan waktu untuk membuka masalah ini. Agar komunitas dapat menangani masalah Anda secara efektif, kami memerlukan sedikit lebih banyak informasi.

Berikut adalah item yang tidak dapat kami temukan dalam deskripsi Anda:

  • jenis masalah
  • versi yang memungkinkan
  • nama komponen

Harap tetapkan deskripsi masalah ini dengan template ini:
https://raw.githubusercontent.com/ansible/ansible/devel/.github/ISSUE_TEMPLATE.md

klik di sini untuk bantuan bot

Karena saya membutuhkan python2, saya menambahkan sebagai tugas pertama:

- 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

Info lebih lanjut disini

@guruprasad85 Masalah ini menunggu tanggapan Anda. Harap tanggapi atau masalah akan ditutup.

klik di sini untuk bantuan bot

Penjelasan di atas sudah cukup untuk menyelesaikan masalah ini.

Beberapa bacaan tambahan:

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-mesin jarak jauh

Jika ada pertanyaan lebih lanjut silahkan mampir ke IRC atau milis:

Anda juga dapat menonaktifkan _Pengumpulan Fakta_, masukkan ini ke dalam buku Anda

- hosts: anything
  gather_facts: False

@bcoca @sivel apakah ada rencana untuk mengunjungi kembali ini? Sepertinya saya seperti Ansible setidaknya harus mencoba menggunakan /usr/bin/python3 (atau /usr/bin/python2 sebagaimana mestinya) jika /usr/bin/python tidak tersedia.
@SpamapS melaporkan bahwa AMI Ubuntu resmi di AWS hanya dikirimkan dengan /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

Untuk anak cucu, ini adalah peluang peningkatan yang diketahui untuk Ansible dan sedang dipertimbangkan untuk dimasukkan dalam peta jalan untuk >=2.8

Dalam kasus saya (mungkin 2.7.0):
myIp | GAGAL! => {
"berubah": salah,
"modul_stderr": "",
"module_stdout": "/bin/sh: /usr/bin/python: Tidak ada file atau direktori\r\n",
"msg": "MODULE FAILURE\nLihat stdout/stderr untuk kesalahan yang sebenarnya",
"rc": 127
}

$ll |grep python
lrwxrwxrwx 1 root root 32 5 Jun 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 root root 4864 29 Mei 2014 python2.6
-rwxr-xr-x 1 root root 1418 29 Mei 2014 python2.6-config

kok softlink nya ga bisa ya?

Dalam kasus saya (mungkin 2.7.0):
myIp | GAGAL! => {
"berubah": salah,
"modul_stderr": "",
"module_stdout": "/bin/sh: /usr/bin/python: Tidak ada file atau direktori\r\n",
"msg": "MODULE FAILURE\nLihat stdout/stderr untuk kesalahan yang sebenarnya",
"rc": 127
}

$ll |grep python
lrwxrwxrwx 1 root root 32 5 Jun 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 root root 4864 29 Mei 2014 python2.6
-rwxr-xr-x 1 root root 1418 29 Mei 2014 python2.6-config

kok softlink nya ga bisa ya?

maaf, itu salahku. Gunakan softlink, itu berhasil

sederhana: ln -s /usr/bin/python3 /usr/bin/python menyelesaikan masalah saya

Cukup gunakan ansible_python_interpreter=/usr/bin/python3 di file inventaris Anda

Terima kasih, ini berfungsi sekarang

Ini tampaknya memiliki masalah dengan pyenv pyenv global <version> .

Seharusnya shim, tapi saya kira Ansible adalah kode yang sulit untuk dilihat /usr/bin/python , sebagai lawan hanya menggunakan python perintah?

Jika demikian, apakah ini akan berubah? Atau adakah solusi yang bisa saya gunakan?

Jika demikian, apakah ini akan berubah?

Tidak, bukan.

Anda perlu secara eksplisit mengatur ansible_python_interpreter ke juru bahasa python jika Anda ingin menggunakan sesuatu selain /usr/bin/python .

Yang dalam kasus pyenv kemungkinan hanya akan menjadi jalur ke shim ( which python3.6 ) atau ke biner nyata ( pyenv which python3.6 ). Catatan, dalam banyak keadaan, Anda perlu membuat kode keras itu dan tidak dapat menggunakan ekspansi shell.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

renaudguerin picture renaudguerin  ·  3Komentar

tspivey picture tspivey  ·  3Komentar

rokka-n picture rokka-n  ·  3Komentar

Pallokala picture Pallokala  ·  3Komentar

hryamzik picture hryamzik  ·  3Komentar