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"
}
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.
@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:
Harap tetapkan deskripsi masalah ini dengan template ini:
https://raw.githubusercontent.com/ansible/ansible/devel/.github/ISSUE_TEMPLATE.md
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.
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-configkok 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.
Komentar yang paling membantu
Cukup gunakan
ansible_python_interpreter=/usr/bin/python3
di file inventaris Anda